0
我有一個Product
和Category
實體。Symfony2的形式選擇欄
Category
實體是鄰接表/物化路徑模型。
Product
有關係Category
具有追溯至Product
在我ProductType
類我想與所有類別中selectmenu於母公司名稱分組特定水平。
$builder->add('category', 'entity', array(
'label' => 'Category',
'class' => 'Test\AdminBundle\Entity\Category',
'property' => 'name',
'group_by' => 'parentName',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
$qb = $er->createQueryBuilder('c');
return $qb->where($qb->expr()->like('c.path', ':path'))
->orderBy('c.path', 'ASC')
->setParameter('path', '%/%/%');
},
));
Category
有一個方法:
public function getParentName()
{
if (null === $this->getParent()) {
return null;
}
return $this->getParent()->getName();
}
它可以作爲預期,但一查詢是每一個家長(很多)執行。如果我與父母聯合,父母也可以在我不想要的選擇菜單中選擇。
如何限制查詢?
或過濾器一個連接的結果?
添加可以添加' - > leftJoin( 'c.parent', 'P')'如果你有一個父母的類別。這並不影響結果的數量 – 2013-05-14 17:16:27
我明白你的意思,但不幸的是,它不會改變任何事情。 – user1070125 2013-05-14 18:32:18