有没有人知道如何根据Doctrine 2 QueryBuilder select()语句中的条件检索计数?学说2:按选择类型计数项目
这是我到目前为止已经试过......
我第一次尝试是试图用EQ计数()()。我收到的错误说:“期望的圆括号,等于”。
$qb->select($qb->expr()->count($qb->expr()->eq('t.id', '1')))
接下来我试着count()与having()。我收到的错误说:“达到最大功能嵌套级别。”
$qb->select($qb->expr()->count($qb->having('t.id', '1')))
然后我试着count()与where()和eq()。我再次获得了“达到最大功能嵌套级别”。
$qb->select($qb->expr()->count($qb->where($qb->expr()->eq('t.id', '1'))))
然后我试着在()中使用这些变体。他们都给予预计将从,得到了‘(’
$qb->select($qb->expr()->count($qb->expr()->in('t.id', array(1))))
$qb->select($qb->expr()->count($qb->expr()->in('t.id', 1)))
对于在()中例举的语法错误”,我也试过在价值传递作为变量,并通过的setParameter(),有相同的结果。
这是MySQL的等价的东西我想代码的QueryBuilder的:
SELECT
SUM(IF(type.id = 1, 1, 0)) AS 'fords',
SUM(IF(type.id = 2, 1, 0)) AS 'hondas'
FROM item
JOIN type ON item.type_id = type.id
不要忘了,你可以使用原生查询。有时它更快,更优雅。 –