Laravel技术问题:近48小时至少2条评论的帖子时间筛选失效
解决Laravel筛选近48小时内至少2条评论帖子的问题
你的代码逻辑存在偏差:has('comments', '>', 1)是筛选总评论数≥2的帖子,而whereHas仅确保帖子至少有一条近48小时内的评论,两者组合后得到的是“总评论数≥2且存在一条近期评论”的结果,并非你需要的“近48小时内的评论数≥2”,这就是时间筛选未生效的核心原因。
修正后的代码:
$posts = Post::whereHas('comments', function ($query) { $query->where('created_at', '>', Carbon::now()->subDays(2)); }, '>', 1)->get()->toArray();
代码说明
whereHas方法的第三个参数是比较运算符,第四个参数是数量阈值,这段代码的逻辑是:筛选出关联的comments中,满足created_at在近48小时内的记录数大于1的帖子,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者micky
相关产品推荐
相关产品推荐

