具有Doctrine查询生成器子选择的Symfony表单实体

时间:2014-03-04 23:40:17

标签: php sql forms symfony doctrine-orm

我有一个表单字段,显示一个选择的类别框 - 类别可以有一个父类别,它是一个自引用索引。

在我的表单中,我只想显示没有父项的类别,因此原始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' 

所以我显然错过了一些东西......有人能指出我正确的方向吗?

0 个答案:

没有答案