使用now()的Laravel DB查询

时间:2018-10-22 11:04:13

标签: mysql laravel

我需要从数据库中获取数据,但是仅当ReturnDate列表示将来的日期时。 当我从数据库执行SQL查询时 SQL代码:

SELECT * FROM `injuries_suspensions` WHERE `Type` = 'injury' and NOW() < `ReturnDate`

但是当我在Laravel DB查询生成器中使用类似版本时,我什么都没得到(当我用NOW()擦除位置时,我得到了所有数据,这就是问题所在)

Laravel代码:

$injuries = DB::table('injuries_suspensions')->where('Type', '=', 'injury')->where(DB::raw('NOW()'), '<', 'ReturnDate')->get();

P.S DB中的日期远不是将来的2020-11-30。

1 个答案:

答案 0 :(得分:1)

您想使用简化版本whereRaw

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->whereRaw('ReturnDate > NOW()')->get(); //see I changed the comparison sides

观察到的是,您没有正确使用whereRaw:所有内容都应放在单个字符串中,请参见laravel's example

您也可以在建立查询时直接通过使用Carbon传递时间戳/日期,请参见:

use Carbon/Carbon;
....

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->where('ReturnDate', '>', Carbon::now()->toDateTimeString())->get();
  

PS:请注意数据库和服务器的时区差异。