You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel查询超15天交付日期及默认状态报错求助

解决Laravel查询中的列不存在错误

嘿,这个错误我太熟啦!问题出在你把整个日期判断条件当成了一个列名来处理,Laravel自然找不到这个不存在的列~

错误原因

你大概率是直接把delivery_date + INTERVAL 15 DAY < NOW()这个SQL表达式作为字符串传给了where()方法,Laravel会默认把这个字符串解析成列名,所以才会抛出Unknown column的错误。

两种正确的解决方式

方式一:使用whereRaw()执行原生SQL条件

直接用whereRaw()方法传入完整的SQL条件,Laravel会原样解析这个表达式,不会把它当成列名:

$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')
    ->whereRaw('delivery_date + INTERVAL 15 DAY < NOW()')
    ->where('ssi_tracks.track_track_status', 0)
    ->get();

方式二:用Laravel日期查询方法(推荐)

用Laravel自带的日期处理方法,更符合框架风格,还能自动处理时区问题:

$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')
    ->whereDate('delivery_date', '<', now()->subDays(15)) // 等价于"交付日期超过15天"的逻辑
    ->where('ssi_tracks.track_track_status', 0)
    ->get();

这里now()->subDays(15)会生成当前时间往前推15天的时间,判断delivery_date早于这个时间,就满足“超过15天”的需求。

内容的提问来源于stack exchange,提问作者user9461267

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:15:56