我有一个表单字段,显示一个选择的类别框 - 类别可以有一个父类别,它是一个自引用索引。
在我的表单中,我只想显示没有父项的类别,因此原始SQL(有效)将如下所示:
SELECT c.id
FROM category c
WHERE (
SELECT count( cx.id ) AS cxcount
FROM category cx
WHERE cx.parent_id = c.id
) = 0
所以我的表单字段如下所示:
->add('category', 'entity', array(
'class' => 'AcmeBundleName:Category',
'query_builder' => function($repository) {
$qb2 = $repository->createQueryBuilder('cx');
$qb = $repository->createQueryBuilder('c');
$qb->where(
$qb->expr()->eq(
$qb2->select('count(cx.id) AS cxcount')
->where('cx.parent_id = c.id')
, '0')
);
return $qb;
},
// rest of field options
我得到的错误是:
[Syntax Error] line 0, col 57: Error: Expected Literal, got 'SELECT'
所以我显然错过了一些东西......有人能指出我正确的方向吗?