我有一个奇怪的问题 - 我的 Tasks
表有一个 due_at
列。我将来在表中植入 50 个值,然后在我的管理 Controller 中我想抓取这些任务以显示在管理面板中:
// AdminController.php
$tasks = Task::where('due_at', '>=', 'NOW()')->get();
dd($tasks); // shows zero results
在 phpmyadmin 中运行相同的查询会产生预期的 50 行:
SELECT * FROM `tasks` WHERE due_at >= now(); // returns 50 rows
如果我只是反转运算符,它会返回 50 个结果:
// AdminController.php
$tasks = Task::where('due_at', '<=', 'NOW()')->get();
dd($tasks); // shows 50 results
我是否遗漏了一些明显的东西?
最佳答案
我认为你需要这样做:
$tasks = Task::where('due_at', '<=', DB::raw('NOW()'))->get();
在 MySQL 服务器中打开查询日志记录,我想您会发现 Laravel 4 查询生成器正在将字符串 'NOW()' 解释为您不期望的内容。您必须将其包装在 DB::raw() 中才能将原始字符串放入查询中。
关于php - laravel 4 ORM 查询运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470046/