php - Laravel 5 Eloquent 比较日期返回 0 行,DB::table 返回行

标签 php mysql laravel eloquent laravel-5

我在使用 Laravel 5 和 Eloquent 时遇到问题,当我将日期与我拥有的模型(称为回调)上的 where 子句进行比较时,我返回了 0 行。 如果我用\DB::代替,我会返回正确的行。

    $callbacks = Auth::user()
        ->callbacks
        ->where('datetime', '>', '0000-00-00 00:00:00')
        ->sortBy('datetime')
        ->values()
        ->take(10);

    $callbacks2 = \DB::table('callbacks')
        ->where('datetime', '>', Carbon::today())
        ->get();

我能看到的唯一区别是第一个是通过 Eloquent Relationship 完成的,它返回经过身份验证的用户的所有回调的 Laravel 集合。

如果我删除 $callbacks 表达式中的 where 子句,它会返回所有回调(当然,旧的和新的一样,因为那时没有进行过滤)。

我尝试使用 Carbon\Carbon::today() 而不是我在上面粘贴的字符串文字,它给出了相同的结果,并且其中一个回调的数据库中的日期时间是 2016-04-05 15:30:00.

我一直在疯狂地谷歌搜索并尝试所有我能想到的,我真的不想为用户做一个完整的回调提取,只是为了在发送回调之前在 PHP 中删除大部分回调一天,到 View 。

我知道我需要做另一个 Where to avoid get rows from day after the day I'm looking,我只是删除了大部分链接以清理它:)

非常欢迎任何建议!

最佳答案

Auth::user()->callbacks 是一个集合,因此您在集合中的项目集上调用 where。所以答案取决于您在数据库中的数据,但这些不会产生相同的查询。

我会假设 DB:: 返回的行不真实存在于当前用户。

您可以通过调用查看运行了哪些查询

DB::enableQueryLog()//在查询之前

dd(DB::getQueryLog()//在查询运行之后

关于php - Laravel 5 Eloquent 比较日期返回 0 行,DB::table 返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36409173/

相关文章:

php - JSON——轻量级?

php - 如何限制或限制用户可以在网络表单中输入的 html 标签,首选项。客户端?

javascript - PHP:使用十进制值添加 div 背景颜色(1 = 黑色,0 = 白色)

java - 在MySQL Hibernate JPA事务期间未检测到死锁

mysql 仅当存在时更新 不插入

php - Blade 文件中的 if else 条件(laravel 5.3)

javascript - 从数据库加载数据,用AJAX发布以更新数据库,返回以加载新数据!完全困惑

mysql - Sailsjs Mysql ORM 对同一个表字段进行多次查询

php - Laravel 拒绝用户 'root' @'localhost' 访问(使用密码 : YES) in laravel 5. 7

php - Laravel 5.5 获取最近更新的多条记录