我有兩個實體,「Pin」和「Tag」,具有ManyToMany關係。 我想大多數用於獲取的標籤順序列表的形式顯示如何使用Doctrine獲得最常用的標籤?
這裏我用的方法庫:
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();
},
));
但我有一個錯誤: 預期類型的參數在供應商指定 「對象或數組」,「字符串」/s的ymfony/symfony中/ src目錄/ Symfony的/分量/ PropertyAccess/PropertyAccessor.php在行224
有你加入' - > getQuery( ) - >'orderBy()'後面的getResult()'?在你的示例代碼中,這是缺少 –
我不能這樣做,因爲我必須在我的buildForm中得到一個queryBuilder。 – sepointes
嘗試這一個' - > addSelect('COUNT(DISTINCT p.id)AS HIDDEN total_pins')'這樣ORM將不會在結果集 –