Доктрина 2: Подсчет элементов по типу в Select

Кто-нибудь знает, как получить счетчик на основе условия в инструкции select () Doctrine 2 QueryBuilder?

Вот что я пробовал до сих пор ...

Моя первая попытка была чтобы попробовать count () с eq (). Я получаю сообщение об ошибке: «Ожидаемые закрывающие скобки, получено равно»

$qb->select($qb->expr()->count($qb->expr()->eq('t.id', '1')))

Затем я попробовал count () с использованием (). Я получаю сообщение об ошибке: «Достигнут максимальный уровень вложенности функций»

$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'))))

. Затем я попробовал эти варианты, используя in (). Оба они выдают синтаксическую ошибку «Ожидается ОТ, получил '('

$qb->select($qb->expr()->count($qb->expr()->in('t.id', array(1))))
$qb->select($qb->expr()->count($qb->expr()->in('t.id', 1)))

Для примеров in () я также попытался передать значение как переменную и через 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
7
задан cantera 18 November 2011 в 15:53
поделиться