在laravel中查找超过15天的日期

时间:2018-04-28 06:41:00

标签: mysql laravel laravel-5.5 laravel-5.6

我需要显示比较交货日期是否超过15天并且还显示track_track_status = 0作为默认值。当我这样做时它会抛出错误

错误 未找到列:1054未知列'" delivery_date' +间隔15天< NOW()'在' where子句

$secondstatus = DB::table('registrations')
            ->join('ssi_tracks', 'registrations.registration_id', '=', 'ssi_tracks.registration_id')
            ->select('ssi_tracks.ssi_track_id', 'address', 'model', 'chassis', 'delivery_date','ssi_tracks.track_second_status')
            ->where([["ssi_tracks.track_second_status", "=", 0]])
             ->orWhereRaw('registrations.delivery_date + INTERVAL 15 DAY <= NOW()')

            ->get();

3 个答案:

答案 0 :(得分:3)

使用Carbon代替laravel orWhere

->orWhere( 'delivery_date', '<=', Carbon::now()->subDays(15))

答案 1 :(得分:0)

使用原始查询,如下所示:

$now = \Carbon\Carbon::now();

->orWhere(DB::raw(registrations.delivery_date + INTERVAL 15 DAY, "<=", $now))

如果它返回任何错误,请检查并在此处作出响应。

答案 2 :(得分:0)

只是做:

$secondstatus = DB::table('registrations')
            ->join('ssi_tracks', 'registrations.registration_id', '=', 'ssi_tracks.registration_id')
            ->select('ssi_tracks.ssi_track_id', 'address', 'model', 'chassis', 'delivery_date','ssi_tracks.track_second_status')
            ->where([["ssi_tracks.track_second_status", "=", 0]])
             ->orWhere('registrations.delivery_date', '<=', \DB::raw("NOW() - INTERVAL 15 DAYS")))    
            ->get();

问题是查询构建器将为表名设置别名,但如果它在whereRaw

内,则不会对其进行别名