php - laravel 4 ORM 查询运算符

标签 php mysql laravel laravel-4

我有一个奇怪的问题 - 我的 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/

相关文章:

php - 未知方法 SfGuardUserTable::retrieveByUsername Symfony1.4

javascript - 使用 Ajax 和 JSON 在 HTML 中显示 PHP 回显消息

mysql - 是否可以在同一张表上进行多个连接?

mysql - 从连接表插入表,更新的表有额外的列

laravel 5.6 id 自动转换为 int

php - 限制字符串长度

javascript - javascript中的两个参数

mysql - 使用 JOIN GROUP 和 ORDER BY 优化 MySQL 查询的任何想法

php - Laravel 收银员 + Stripe : No Such Customer

php - Laravel 4 急切加载 - 所有关系都被推到第一个返回的对象