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

Laravel中如何获取近24小时/30天内创建的数据?附代码示例

在Laravel中筛选近24小时/30天的数据

嘿,这事儿不难!咱们只需要在你现有的Eloquent查询里,加上针对created_at字段的时间范围筛选就行。我把两种需求的修改方案都给你列出来:

1. 获取近24小时内创建的数据

直接用Laravel自带的Carbon时间工具,通过now()->subHours(24)得到24小时前的时间,然后筛选created_at大于等于这个时间的记录:

$last['last_trades'] = Credit::where('user_id', $user->id)
    ->where('description', '#1 Bonus Trade')
    ->where('currency_code', 'LTC')
    ->where('created_at', '>=', now()->subHours(24)) // 新增:筛选近24小时的数据
    ->orderBy('created_at', 'DESC')
    ->limit(5)
    ->get();

如果你想更明确地指定时间范围(比如从24小时前到当前这一刻),也可以用whereBetween写法,效果完全一致:

->whereBetween('created_at', [now()->subHours(24), now()])

2. 获取近30天内创建的数据

逻辑和上面一样,只是把时间调整为30天前:

$last['last_trades'] = Credit::where('user_id', $user->id)
    ->where('description', '#1 Bonus Trade')
    ->where('currency_code', 'LTC')
    ->where('created_at', '>=', now()->subDays(30)) // 新增:筛选近30天的数据
    ->orderBy('created_at', 'DESC')
    ->limit(5)
    ->get();

小提示

  • now()是Laravel封装的Carbon实例,会自动使用你配置的时区,不用手动处理时区问题~
  • 如果你的需求是“最近一个自然月”(比如从上个月今天到今天),可以换成now()->subMonth(),不过subDays(30)更适合精确的30天滚动范围。

内容的提问来源于stack exchange,提问作者Lucas Zimmermann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:37