¿Alguien sabe cómo recuperar un conteo basado en una condición en una instrucción Doctrine 2 QueryBuilder select()?Doctrina 2: contar elementos por tipo en Seleccionar
Aquí es lo que he probado hasta ahora ...
Mi primer intento fue tratar de conteo() con la ecuación(). El error que recibo dice "Esperaba paréntesis cercanos, obtuve iguales".
$qb->select($qb->expr()->count($qb->expr()->eq('t.id', '1')))
Siguiente Probé count() con having(). El error que recibo dice "Nivel máximo de anidación de funciones alcanzado".
$qb->select($qb->expr()->count($qb->having('t.id', '1')))
Luego probé count() con where() y eq(). Nuevamente obtuve el "Nivel máximo de anidación de funciones alcanzado".
$qb->select($qb->expr()->count($qb->where($qb->expr()->eq('t.id', '1'))))
Luego probé estas variaciones usando in(). Ambos dan el error de sintaxis "que se esperan de, consiguió '('
$qb->select($qb->expr()->count($qb->expr()->in('t.id', array(1))))
$qb->select($qb->expr()->count($qb->expr()->in('t.id', 1)))
Para el paréntesis() ejemplos, también he intentado pasar en el valor como una variable y mediante setParameter(), con el mismo resultado.
Aquí es el equivalente de MySQL de lo que estoy tratando de código en 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
No se olvide, que se pueden utilizar Consultas nativas A veces es más rápido y más elegante. –