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

Laravel新闻系统获取点赞数最高的前5篇帖子实现咨询

实现方案

你可以直接使用Laravel提供的withCount关联统计方法实现需求,该方法会自动为查询出来的Post模型追加likes_count属性,统计效率高,代码可读性强。

方案1:统计有效点赞(推荐,适配你表中的is_liked字段)

你的post_likes表存在is_liked字段(通常用于标记用户是否取消点赞),统计时需要筛选出有效点赞记录:

$top5Posts = Post::withCount(['likes' => function ($query) {
    // 仅统计标记为已点赞的记录,排除取消点赞的数据
    $query->where('is_liked', 1);
}])
// 按点赞数倒序排列
->orderBy('likes_count', 'desc')
// 点赞数相同时,默认按发布时间倒序,优先展示新帖子
->orderBy('created_at', 'desc')
// 取前5条
->take(5)
->get();

你可以直接通过$top5Posts[0]->likes_count获取对应帖子的点赞数。

方案2:无取消点赞逻辑的简化写法

如果你的业务中用户点赞后不会取消,post_likes表中所有记录的is_liked都为1,可以直接简化为:

$top5Posts = Post::withCount('likes')
->orderBy('likes_count', 'desc')
->orderBy('created_at', 'desc')
->take(5)
->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:06:05