我有两个实体 - 具有OneToMany关系的类别和文章。
当我渲染用于添加/编辑文章对象的表单时,我在html选择中看到所有类别,但我想只看到一部分类别(将来我还想根据不同的情况添加类别条件)。
如何覆盖由Doctrine自动生成的查询,该查询会检索类别,以便过滤它们?
提前致谢, 尼古拉
答案 0 :(得分:5)
在ArticleType的类别字段中传递query_builder参数,您可以自定义检索类别元素的查询。
$form = $this->createFormBuilder()
->add('category', 'entity', array(
'class' => 'ArticleBundle:Category',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.name', 'ASC');
//add more query elements here
},)
)
->getForm();
查看更多详情here
答案 1 :(得分:1)
您可以通过将query_builder选项设置为一个闭包来接受存储库作为参数并返回查询构建器来完成此操作。