доктрина, запрос с подсчетом и конкат - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть запрос, который я построил с помощью 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.Без этого выбора это работает, но с этим нет.Я получаю сообщение об ошибке:

enter image description here

Очень похожий raw 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

но вУ меня есть синтаксическая проблема.Как правильно написать этот запрос в построителе запросов?Буду благодарен за помощь.С наилучшими пожеланиями

...