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

Laravel 8使用Carbon实现记录至少展示一周的查询方案

实现Laravel 8中记录展示一周后自动排除的查询

要实现“记录从创建日起展示满7天后自动排除”的需求,你可以借助Carbon和Laravel的Eloquent查询来完成,核心是筛选出创建时间在最近7天内的记录,具体实现如下:

基础实现(考虑时分秒)

如果需要精确到时间(比如某条记录17/08/2022 14:30创建,到24/08/2022 14:30后才会被排除),可以用以下查询:

use Carbon\Carbon;
use App\Models\YourModel; // 替换成你的模型类名

$records = YourModel::where('created_at', '>=', Carbon::now()->subDays(7))->get();

逻辑说明

  • Carbon::now()->subDays(7):获取当前时间往前推7天的精确时间点(比如今天是25/08/2022 10:00,这个值就是18/08/2022 10:00)。
  • where('created_at', '>=', ...):筛选出创建时间晚于等于这个时间点的记录,这样17/08/2022的记录在25号就会被排除,完全符合你的需求。

精确到日期(忽略时分秒)

如果只需要按日期判断(不管记录是当天几点创建,只要是17号的记录,到25号就排除),可以用whereDate方法忽略时间部分:

use Carbon\Carbon;
use App\Models\YourModel;

$records = YourModel::whereDate('created_at', '>=', Carbon::today()->subDays(7))->get();

逻辑说明

  • Carbon::today()返回当天的00:00:00,subDays(7)就是7天前的00:00:00(比如24号执行时是17号00:00,25号执行时是18号00:00)。
  • whereDate只比较日期部分,所以17号的记录在24号还会被查询到,25号就会被排除。

注意事项

  • 确保数据库中的日期字段(比如created_at)是datetime或timestamp类型,且存储的时间与Laravel应用配置的时区一致(可在config/app.php的timezone项设置)。
  • 如果你的记录使用自定义日期字段(比如publish_date),只需将上述代码中的created_at替换为你的字段名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:39:18