Laravel查询构造器:筛选输入日期处于starts_at与ends_at区间的记录方法
如何用Laravel查询构造器筛选输入日期在starts_at和ends_at之间的记录
刚好之前处理过类似的需求,用Laravel的查询构造器链式调用where方法就能轻松搞定,核心就是要让输入日期同时满足大于等于starts_at,并且小于等于ends_at这两个条件。
具体实现代码
直接基于你的Eloquent模型编写查询即可,代码如下:
// 先准备好你的输入日期,推荐用Carbon处理日期格式 $inputDate = \Carbon\Carbon::parse('2024-05-20'); // 替换成你实际的模型类名,比如Event::... $targetRecords = YourModel::where('starts_at', '>=', $inputDate) ->where('ends_at', '<=', $inputDate) ->get();
额外提示
- 一定要把
YourModel替换成你项目中对应的Eloquent模型名称 - 如果输入的日期是字符串类型,用
Carbon::parse()转换一下会更稳妥,Laravel会自动适配数据库的datetime字段格式 - 这个查询逻辑会精准返回所有满足
starts_at ≤ 输入日期 ≤ ends_at的记录,完全匹配你的需求
内容的提问来源于stack exchange,提问作者Fauzi PadLaw
相关产品推荐
相关产品推荐

