在一个复杂的查询中,我有一个子查询来计数/汇总孩子:
->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 ... AS CHAR(25),但是它不起作用(出现相同的错误)。 有人可以帮我吗?
最好的问候, 乔纳森
答案 0 :(得分:0)
看起来像是教义的StringPrimary解析器函数中的回归。 看完代码后,我对与该问题有关的问题发表了评论(虽然没有完整地描述它)。
本质上是新功能,缺少此部分,并且在遇到任何聚合功能时默认为错误:
default:
if ($this->isAggregateFunction($lookaheadType)) {
return $this->AggregateExpression();
}
PS。链接到相关问题: https://github.com/doctrine/doctrine2/issues/7205
答案 1 :(得分:0)
我找到了一种解决方法:安装doctrine extensions,然后用CONCAT_WS(DoctrineExtensions \ Query \ Mysql \ ConcatWs)替换CONCAT。 最好的问候