如何使用 Doctrine 获取最常用的标签?

how to get the most used tags with Doctrine?

我有两个实体,"Pin" 和 "Tag",具有多对多关系。 我想获取最常用于以表格形式显示的标签列表

这里是我的存储库,方法是:

    public function findPopularTag(){
    return $qb = $this->createQueryBuilder('t')
    ->addSelect('COUNT(DISTINCT  p.id) AS total_pins')
    ->leftJoin('t.listeEpingles', 'p')
    ->groupBy('t.id')
    ->orderBy('total_pins','DESC');


}

在我的 buildForm 中,我使用此方法创建一个实体类型:

            $builder->add(  'listeTagsDansListeEpingles', 'entity', array(
                'class'    => 'SharincookRecipesBundle:Tag',
                'required'  =>false,
                'multiple' => true,
                'property' => 'libelle',
                'expanded'=>true,
                'query_builder' => function(TagRepository $repo){
                    return $repo->findPopularTag();
                },


        ));

但我有一个错误: 预期参数类型 "object or array","string" 给定vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php 的第 224 行

您可以在查询构建器中使用左联接和排序方式

$tag = $em->getRepository('NamespaceYourBundle:Tag');
$qb = $tag->createQueryBuilder('t')
        ->addSelect('COUNT(DISTINCT  p.id) AS HIDDEN total_pins')
        ->leftJoin('t.pins', 'p');
        ->groupBy('t.id')
        ->orderBy('total_pins','DESC')
        ->getQuery()
        ->getResult();