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

如何使用Eloquent批量更新满足24小时时间差条件的Business记录

解决Laravel批量取消超时推荐商家的问题

要准确筛选出updated_at早于当前时间24小时的推荐商家,你需要修正时间条件的写法——原代码用whereDate只会对比日期部分,会忽略时间差的精确计算,导致逻辑错误。

修正后的代码

Business::where('is_featured', true)
        ->where('updated_at', '<', now()->subHours(24))
        ->update(['is_featured' => false]);

或者更简洁的写法,subDay()和subHours(24)效果完全一致:

Business::where('is_featured', true)
        ->where('updated_at', '<', now()->subDay())
        ->update(['is_featured' => false]);

为什么这么改?

  • now()->subHours(24)会生成当前时间往前推24小时的完整时间戳,和updated_at的时间做精确对比,确保只有真正超过24小时的记录才会被更新。
  • 原代码的whereDate('updated_at', '<', now())只对比日期部分,比如当前是10月5日15:00,那10月4日16:00的记录(距离当前还不到24小时)也会被误判,因为日期是10月4日小于10月5日,这完全不符合你的需求。

额外注意

确保Laravel配置文件config/app.php里的timezone和数据库的时区一致,避免因时区差异导致时间计算出现偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:29