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

如何统计指定日期的所有MyPosts元素?解决Carbon时间匹配问题

解决Laravel中统计指定日期所有MyPosts记录的问题

你遇到的核心问题是:created_at字段存储的是包含时分秒的完整时间戳,而你原来的代码用了精确时间匹配——Carbon::now()->subDays(1)返回的是当前时间往前推24小时的具体时间(比如现在是2024-05-20 14:30,那就是2024-05-19 14:30),数据库里几乎不会有记录的created_at恰好等于这个时间,所以查不到数据。

下面是两种可靠的解决方案:

1. 用Laravel内置的whereDate方法(最简洁)

这个方法会自动忽略created_at的时间部分,只匹配日期:

// 统计昨天的所有记录
$count = MyPosts::whereDate('created_at', Carbon::yesterday())->count();

// 如果要统计任意指定日期(比如2024-05-19)
$targetDate = Carbon::parse('2024-05-19');
$count = MyPosts::whereDate('created_at', $targetDate)->count();

2. 手动指定时间范围(更灵活)

如果你需要更精确的时间区间(比如某天的00:00:00到23:59:59),可以用whereBetween:

// 统计昨天的所有记录
$yesterdayStart = Carbon::yesterday()->startOfDay();
$yesterdayEnd = Carbon::yesterday()->endOfDay();
$count = MyPosts::whereBetween('created_at', [$yesterdayStart, $yesterdayEnd])->count();

// 统计任意指定日期的所有记录
$targetDate = Carbon::parse('2024-05-19');
$targetStart = $targetDate->startOfDay();
$targetEnd = $targetDate->endOfDay();
$count = MyPosts::whereBetween('created_at', [$targetStart, $targetEnd])->count();

两种方法都能准确统计指定日期内的所有MyPosts记录,根据你的需求选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:05:22