我有两个实体,“Pin”和“Tag”,具有ManyToMany关系。 我想得到一个标签列表,大多数用于以表格形式显示
这里我的存储库使用方法:
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中,我使用此方法创建entityType:
$builder->add( 'listeTagsDansListeEpingles', 'entity', array(
'class' => 'SharincookRecipesBundle:Tag',
'required' =>false,
'multiple' => true,
'property' => 'libelle',
'expanded'=>true,
'query_builder' => function(TagRepository $repo){
return $repo->findPopularTag();
},
));
但我有一个错误: “对象或数组”类型的预期参数,给定的“字符串” 在 vendor / symfony / symfony / src / Symfony / Component / PropertyAccess / PropertyAccessor.php第224行
答案 0 :(得分:1)
您可以在查询构建器中使用左连接和排序依据
$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();