在一个复杂的查询中,我有一个子查询来计算/汇总子查询:
->addSelect('(SELECT CONCAT(COUNT(c.id), '|', SUM(c.field1), '|', SUM(c.field2), '|', SUM(c.field3)) FROM AppEntityChild c WHERE c.parent = p.id GROUP BY c.parent)')
这个查询运行良好,直到我升级到新版本的Symfony(4.2(和doctrineorm 2.6.1。我收到以下错误:
[Syntax Error] line 0, col 25: Error: Expected StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression, got 'COUNT'
我尝试使用演员表 ...作为 CHAR(25(,但它不起作用(出现相同的错误(。 有人可以帮我吗?
此致敬意 乔纳森
看起来像是学说中的回归 字符串主要解析器函数。 在查看代码后,我对与此问题相关的问题的观察进行了评论(虽然没有详细描述它(。
本质上是缺少这部分的新函数,并且在遇到任何聚合函数时默认为错误:
default:
if ($this->isAggregateFunction($lookaheadType)) {
return $this->AggregateExpression();
}
相关问题的链接: https://github.com/doctrine/doctrine2/issues/7205
我找到了一个解决方法:我安装了教义扩展,我用CONCAT_WS(DoctrineExtensions\Query\Mysql\ConcatWs(替换了CONCAT。 此致敬意