Doctrine 2 подзапрос в JOIN - PullRequest
       55

Doctrine 2 подзапрос в JOIN

0 голосов
/ 06 февраля 2019

Я пытаюсь преобразовать этот SQL в конструктор запросов доктрины, но не смог создать подзапрос в объединении.Фактический запрос содержит несколько объединений, но я просто хочу, чтобы мне нужно было иметь подзапрос в объединении.

Запрос:

SELECT id, venue_name, mediahawk_clicks
FROM location LEFT OUTER JOIN 
(SELECT location_id, sum(total_calls) as mediahawk_clicks FROM mediahawk_stat GROUP BY location_id) AS calls
ON location.id = calls.location_id

Вот что я пробовал!

        $em = $this->getEntityManager();
        $mediaHawkSubSelect = $em->createQueryBuilder();
        $mediaHawkSubSelect->select("ms.locationId, SUM(ms.totalCalls) as mediahawkClicks")
        ->from('AppBundle:MediahawkStat', 'ms');

        $q = $em->createQueryBuilder();
        $q->from('AppBundle\Entity\Location', 'q')
            ->select("q.id, q.venueName");
        $q->where('q.publishedStatus = 1')
        $q->groupBy('q.id');

        $q->leftJoin(sprintf("(%s)", $mediaHawkSubSelect->getQuery()->getSQL()).")", 'md','WITH', 'q.id = md.locationId')
            ->addSelect('SUM(md.totalCalls) as mediahawkClicks');

Вот сформированный DQL:

SELECT q.id, q.venueName, SUM(md.totalCalls) as mediahawkClicks
FROM AppBundle\Entity\Location q INNER JOIN
(SELECT m0_.location_id AS location_id_0, SUM(m0_.total_calls) AS sclr_1 FROM mediahawk_stat m0_)) md 
WITH q.id = md.locationId GROUP BY q.id

Но когда я пытаюсь получить результаты QQuery.Выдает ошибку:

[Semantical Error] line 0, col 108 near '(SELECT m0_.location_id': Error: Class '(' is not defined.

Любая помощь в преобразовании вышеупомянутого запроса в построитель запросов Doctrine будет принята с благодарностью.

Спасибо

...