【问题标题】:Doctrine QueryBuilder How to do thatDoctrine QueryBuilder 如何做到这一点
【发布时间】:2018-06-05 12:55:38
【问题描述】:

这是在 symfony 中。 如何在另一个环境中更好地完成这项工作不知道为什么 河。是与 RecruitmentUsers 有一对一关系的 Recruitment Entity

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

在开发环境中一切正常,我得到了这个错误:

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 query-builder


    【解决方案1】:

    我会尝试这样的事情。不完全确定你想要什么。

    $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();
    

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 2017-12-24
      • 2011-03-12
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多