我需要计算子查询中返回的项目数。 如果我写子查询如何DQL - 一切都很好,但如果我尝试通过QueryBuilder构建一个查询 - 我得到一个错误。 p>
子查询DQL: p>
< pre> 通过QueryBuilder的子查询: p>
两个版本都返回相同的DQL。 p>
错误:
屏幕 p>
div> $ qb3 = $ this-&gt; createQueryBuilder('c')
- &gt; select('COUNT(c.id)')
- &gt; where('c.id IN(SELECT cl) .id FROM Acme \ AppBundle \ Entity \ ClassC cl INNER JOIN Acme \ AppBundle \ Entity \ ClassP p WHERE p.var1 =:var1 AND p.var2 = cl.id GROUP BY cl.id)')
- &gt; setParameter ('var1',$ var);
code> pre>
$ qb = $ this- &gt; createQueryBuilder('c');
$ qb-&gt; select('COUNT(c.id)')
- &gt;其中(
$ qb-&gt; expr() - &gt; in(\ n'c.id',
$ this-&gt; createQueryBuilder('cl')
- &gt; select('cl.id')
- &gt; innerJoin('Acme \ AppBundle \ Entity \ ClassP', 'p')
- &gt; where('p.var1 =:var1')
- &gt; setParameter('var1',$ var)
- &gt; andWhere('p.var2 = cl.id' )
- &gt; groupBy('cl.i d')
- &gt; getDQL()
)
);
code> pre>