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

Laravel中如何查询checkout_at为Null或满足日期条件的数据

问题分析与代码修正

你的需求是查询Attendance模型中满足以下任一条件的数据:

  • checkout_at字段为Null
  • checkout_at不为Null且日期大于等于当前日期

原代码存在的问题

  1. 语法错误:date('Y-m-d')->get() 写法错误,date()函数返回字符串,无法调用get()方法
  2. 逻辑隐患:如果查询前还有其他where条件,直接用orWhere会打乱原有逻辑,导致结果不符合预期

修正后的代码

$query = Attendance::query();
// 如有其他前置查询条件,可在此添加
// 示例:$query->where('user_id', auth()->id());

// 用闭包包住条件组,保证逻辑正确性
$query->where(function ($q) {
    $q->whereNull('checkout_at')
      ->orWhereDate('checkout_at', '>=', date('Y-m-d'));
});

// 最后调用get()获取查询结果
return $query->get();

关键说明

  • 通过闭包包裹两个条件,确保这两个条件是或的关系,同时不会与其他前置查询条件冲突
  • date('Y-m-d') 正确获取当前日期字符串,作为比较值传入orWhereDate
  • 将get()方法移至查询构造完成后调用,保证查询正常执行

内容的提问来源于stack exchange,提问作者Mr. Jarvis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:00:02