Laravel如何统计d/m/Y格式date字段中今日的总记录数量
问题原因
Laravel 提供的whereDate方法默认会将字段值按照Y-m-d的标准日期格式解析后进行对比,你数据库中date字段存储格式为d/m/Y,格式不匹配导致条件判断失效,才会返回所有记录的统计结果。
修正方案
方案1:字段为字符串类型(varchar/text)时直接匹配
你存的字段本身就是d/m/Y格式的字符串,不需要用whereDate方法,直接用普通where条件精确匹配即可,同时直接调用查询构造器的count()方法,避免先查询全量集合再统计,优化性能:
public function home(){ $appointments = Appointment::where('date', Carbon::today()->format('d/m/Y'))->count(); return view('panel.home',['appointments'=>$appointments]); }
方案2:长期优化建议
如果你的业务需要经常对date字段做日期范围查询、排序等操作,建议将字段类型修改为date/datetime,按照标准Y-m-d格式存储,后续可以直接使用whereDate、whereMonth等Laravel提供的日期查询方法,兼容性和性能都会更好。
注意事项
请先确认config/app.php中的timezone配置和你业务使用的时区一致,避免时区偏差导致日期匹配错误,比如国内业务可配置为Asia/Shanghai。
内容的提问来源于stack exchange,提问作者reedus6749
相关产品推荐
相关产品推荐

