我需要从数据库中获取数据,但是仅当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。
答案 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:请注意数据库和服务器的时区差异。