У меня есть запрос, который я создал с помощью queryBuilder в Doctrine:
$results = $this->createQueryBuilder('cc')
->select("CONCAT('in: ', COUNT(CASE WHEN cc.direction = 'in' THEN 1 END),', out:', COUNT(CASE WHEN cc.direction = 'out' THEN 1 END)) AS summary")
->addSelect(['ch.name as channelName'])
->innerJoin('cc.channel','ch')
->where('cc.case = :caseId')
->andWhere('cc.channel IN (1,2)')
->andWhere('cc.office_id = :transOffice')
->andWhere('cc.id IN (:contactsIds)')
->setParameters($parameters)
->groupBy('ch.id')
->addGroupBy('cc.direction')
->getQuery()
->getArrayResult();
Основная проблема связана с функциями: COUNT и CONCAT. Без этого выбора он работает, но с ним - нет. Я получаю сообщение об ошибке:
Очень похожий необработанный sql работает очень хорошо Это выглядит так:
select Count(*) as number_of_contacts, channel_id, CONCAT('in: ', COUNT(CASE WHEN direction = 'in' THEN 1 END),', out:', COUNT(CASE WHEN direction = 'out' THEN 1 END)) AS summary from cic_case_contacts where case_id = 328678 group By channel_id
ORDER BY channel_id
но в построителе запросов у меня проблема с синтаксисом. Как мне правильно написать этот запрос в построителе запросов? Буду признателен за помощь. С наилучшими пожеланиями
Да вы правы напишу raw sql. Это будет работать.
Я вообще не знаю этого API, но, возможно, вам нужно вызвать функцию select raw вместо того, что вы сейчас вызываете.