php - Laravel 5 查询生成器和 NOW() 用于日期比较

标签 php mysql laravel-5

我的数据库 (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/

相关文章:

php - 如果记录已存在 MySQL 则插入或更新

php - 如何在 Doctrine 映射中描述多列外键

MySQL:str_to_date 函数显示不正确的日期时间值

php - PHP 有自动激活吗?

PHP:图片上传

java - MySQL - 优化我的查询并返回更具体的匹配

php - 如何使用 API 从网站获取数据

php - Mailgun 更改了我电子邮件中的链接

mysql - Laravel 5.1 - DB 正在向我的查询添加反勾号?

php - stdClass 动态成员 - 内存耗尽