【发布时间】:2015-04-29 13:46:34
【问题描述】:
我有两个实体,“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 中,我使用这个方法来创建一个 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 行
【问题讨论】:
-
您在
orderBy()之后添加了->getQuery()->getResult()吗?在您的示例代码中,这是缺少的 -
我不能这样做,因为我必须在我的 buildForm 中获得一个 queryBuilder。
-
试试这个`->addSelect('COUNT(DISTINCT p.id) AS HIDDEN total_pins')`,这样ORM就不会在结果集中获取该列的结果
-
非常感谢!!!!!!有用!!!自从五天以来我一直在处理这个问题
-
很高兴能为你 +1 帮助
标签: symfony doctrine query-builder