Doctrine QueryBuilder Как это сделать - PullRequest
0 голосов
/ 05 июня 2018

Это в Symfony.Как сделать это лучше, эта работа над одним env над другим не знаю почему.это Recruitment Entity, который имеет одно отношение к RecruitmentUsers

$this->createQueryBuilder('r')
        ->select('r')
        ->addSelect('(SELECT SUM(b.payedAmount) FROM APP\Entity\RecruitmentUsers b WHERE b.isActive = 1 and r.id = b.recruitment) as payedSum')
        ->addSelect('(SELECT SUM(c.declaredAmount) FROM APP\Entity\RecruitmentUsers c WHERE c.isActive = 1 and r.id = c.recruitment) as declaredSum')
        ->leftJoin('r.recruitmentUsers','u')
        ->groupBy('r.id')
        ->orderBy('r.id', 'DESC')
        ->getQuery()
        ->getResult()

В dev env все отлично работает в prod я получил эту ошибку:

Fatal error: Uncaught Doctrine\ORM\Query\QueryException: SELECT r, (SELECT SUM(b.payedAmount) FROM APP\Entity\RecruitmentUsers b WHERE b.isActive = 1 and r.id = b.recruitment) as payedSum, (SELECT SUM(c.declaredAmount) FROM APP\Entity\RecruitmentUsers c WHERE c.isActive = 1 and r.id = c.recruitment) as declaredSum FROM App\Entity\Recruitment r LEFT JOIN r.recruitmentUsers u GROUP BY r.id ORDER BY r.id DESC in /usr/home/eliteinvestments/domains/4eliteinvestments.pl/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:43 Stack trace: #0 /usr/home/eliteinvestments/domains/4eliteinvestments.pl/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(487): Doctrine\ORM\Query\QueryException::dqlError('SELECT r, (SELE...') #1 /usr/home/eliteinvestments/domains/4eliteinvestments.pl/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(987): Doctrine\ORM\Query\Parser->semanticalError('line 0, col 42 ...', Array) #2 /usr/home/eliteinvestments/domains/4eliteinvestments.pl/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1 in /usr/home/eliteinvestments/domains/4eliteinvestments.pl/templates/bundles/TwigBundle/Exception/error.html.twig on line 6 

Я сделал кеш: очистить, кеш: разминка,doctrine: cache: clear-query, doctrine: cache: clear-result, doctrine: cache: clear-metadata ничего из этого не работает.Есть намеки?

1 Ответ

0 голосов
/ 16 июля 2018

Я бы попробовал что-то подобное.Не совсем уверен, что вы хотите.

$this->createQueryBuilder('r')
->select('r.id, SUM(u.payedAmount), SUM(u.declaredAmount)')
->leftJoin('r.recruitmentUsers','u')
->where('u.isActive = 1')
->groupBy('r.id')
->orderBy('r.id', 'DESC')
->getQuery()
->getResult();
...