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
相关产品推荐
相关产品推荐

