Doctrine orm 用计数,求和,

Doctrine orm 用计数,求和,,doctrine-orm,count,sum,concat,Doctrine Orm,Count,Sum,Concat,在复杂查询中,我有一个子查询来计算/汇总子查询: ->addSelect('(SELECT CONCAT(COUNT(c.id), \'|\', SUM(c.field1), \'|\', SUM(c.field2), \'|\', SUM(c.field3)) FROM App\Entity\Child c WHERE c.parent = p.id GROUP BY c.parent)') 在我升级到Symfony(4.2)和orm 2.6.1的新版本之前,这个查询一直工作得很好。我

在复杂查询中,我有一个子查询来计算/汇总子查询:

->addSelect('(SELECT CONCAT(COUNT(c.id), \'|\', SUM(c.field1), \'|\', SUM(c.field2), \'|\', SUM(c.field3)) FROM App\Entity\Child c WHERE c.parent = p.id GROUP BY c.parent)')
在我升级到Symfony(4.2)和orm 2.6.1的新版本之前,这个查询一直工作得很好。我得到了以下错误:

[Syntax Error] line 0, col 25: Error: Expected StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression, got 'COUNT'
我试着用CAST。。。与CHAR(25)相同,但不起作用(得到相同的错误)。 有人能帮我吗

致以最良好的祝愿,
Jonathan

看起来像是主解析器函数中的回归。 在看了代码之后,我对与这个问题相关的问题发表了评论(虽然没有完整地描述它)

基本上,新函数缺少此部分,并且在遇到任何聚合函数时默认出错:

            default:
            if ($this->isAggregateFunction($lookaheadType)) {
                return $this->AggregateExpression();
            }
PS.相关问题的链接:

我找到了一个解决方法:我安装CONCAT,并用CONCAT_WS(DoctrineExtensions\Query\Mysql\CONCAT WS)替换CONCAT。 致意