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

Symfony如何用QueryBuilder查询点赞数最高的10篇Article文章

你可以直接在ArticleRepository类中添加如下自定义查询方法,通过左连接关联点赞表、分组统计点赞数再排序实现需求:

public function findTop10MostLikedArticles()
{
    return $this->createQueryBuilder('a')
        // 左连接关联点赞表,确保0赞文章也能被包含
        ->leftJoin('a.articleLikes', 'al')
        // 按文章分组,避免重复数据
        ->groupBy('a.id')
        // 同时查询文章实体和统计的点赞数
        ->select('a, COUNT(al.id) as likeCount')
        // 按点赞数倒序排列,点赞数高的在前
        ->orderBy('likeCount', 'DESC')
        // 最多返回10条结果
        ->setMaxResults(10)
        ->getQuery()
        ->getResult();
}

调用方式

在需要使用数据的位置(比如控制器)直接调用该方法即可:

// 控制器中调用示例
$topArticles = $this->getDoctrine()
    ->getRepository(Article::class)
    ->findTop10MostLikedArticles();

补充说明

  • 返回结果为二维数组,每个元素的第一个值为Article实体对象,likeCount键对应的值为该文章的点赞总数。
  • 如果你不需要展示0赞的文章,可以在groupBy之后添加一行->having('likeCount > 0')过滤即可。
  • 如果你确定不需要保留0赞的文章,可以将leftJoin替换为innerJoin,查询效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:03