如何使用Laravel Eloquent获取昨日数据?
解决Laravel获取昨日数据的几种方法
根据你提供的现有代码(匹配dob字段的月日为今日),以下是获取昨日对应数据的可行方案:
场景1:匹配dob的月日为昨日(如生日类数据)
方法1:替换Carbon实例为yesterday()
沿用你原有的写法逻辑,只需将Carbon::now()替换为Carbon::yesterday()即可:
->whereMonth('dob', Carbon::yesterday()->format('m')) ->whereDay('dob', Carbon::yesterday()->format('d')) ->paginate(10)
方法2:用whereRaw简化SQL条件
通过原生SQL函数直接匹配月日,代码更简洁直观:
->whereRaw('MONTH(dob) = ? AND DAY(dob) = ?', [Carbon::yesterday()->month, Carbon::yesterday()->day]) ->paginate(10)
场景2:匹配完整日期为昨日(如昨日创建的数据)
如果你的需求是获取日期字段(如created_at)属于昨天完整时间段的数据,推荐以下更精准的写法:
方法1:使用whereDate
Laravel内置的whereDate方法可直接匹配日期:
->whereDate('created_at', Carbon::yesterday()) ->paginate(10)
方法2:用whereBetween指定精确时间范围
如果需要限定到昨天00:00:00至23:59:59的完整区间,可使用whereBetween:
->whereBetween('created_at', [ Carbon::yesterday()->startOfDay(), Carbon::yesterday()->endOfDay() ]) ->paginate(10)
内容的提问来源于stack exchange,提问作者Emmanuel Iyen
相关产品推荐
相关产品推荐

