我的数据库 (MySQL) 有一个用于 created_at
的时间戳字段。
我有两个条目,时间戳如下:
- 2017-12-12 18:25:00
- 2016-10-02 18:00:00
今天是 2016-10-19(供以后引用)。如果我使用以下查询,我不会得到任何结果:
$job = $jobs->where('closing_at', '>=', 'NOW()')
->orderBy($sorter[0], $sorter[1])->paginate(24);
如果我对日期进行硬编码,我会得到正确的结果,只是一个 future 的日期:
$job = $jobs->where('closing_at', '>=', "2016-10-19 00:00:00")
->orderBy($sorter[0], $sorter[1])->paginate(24);
我假设我的错误是将 NOW()
与 Eloquent 查询构建器一起使用,但我想不出正确的使用方法。
最佳答案
Eloquent 查询生成器不接受那些特定的 SQL 函数,但是因为它是在您的 PHP 中完成的,所以您可以轻松地使用很棒的 Carbon 类:http://carbon.nesbot.com/docs/ :
使用 Carbon\Carbon;
然后,
$job = $jobs->where('closing_at', '>=', Carbon::now())
->orderBy($sorter[0], $sorter[1])->paginate(24);
这应该可以解决问题。
还有一个 whereDate() Eloquent 方法:https://laravel.com/docs/5.3/queries#where-clauses
关于php - Laravel 5 查询生成器和 NOW() 用于日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140931/