我有一个表单,其中有一个连接到实体的字段:
->add('category', EntityType::class, array(
'class' => ProductCategory::class,
'required' => true,
'query_builder' => function(ProductCategoryRepository $repo) {
return $repo->createCategoryStructuredQuery();
}
))
但是在回购中我必须使用以下查询:
SELECT c.* FROM product_category c order by coalesce(c.parentid, c.id), c.parentid is not null, c.name
Doctrine 由于合并而引发异常并且在 order 子句中不为空,我在 createCategoryStructuredQuery() 中创建了一个本机查询:
public function createCategoryStructuredQuery() {
$rsm = new ResultSetMapping();
$rsm->addEntityResult('ProductBundle\Entity\ProductCategory', 'c');
$nativeQuery = $this->getEntityManager()
->createNativeQuery(
'SELECT c.*
FROM product_category c
order by coalesce(c.parentid, c.id),
c.parentid is not null,
c.name',
$rsm
);
}
如何返回 QueryBuilder 实例以将其正确分配给表单字段?或者我怎样才能使用查询生成器正确构建上面的学说查询?