我在计算一些聚合时遇到问题。
部分代码如下所示:
$qb->select($qb->expr()->countDistinct('policy.calculation', 'policy.id'))
->getQuery()
->getSingleScalarResult();
在 sql 中,可以在多个列上进行不同的计数,从 DQL 中我收到一个错误:
[语法错误] 第 0 行,第 40 行:错误:预期原则\ORM\查询\Lexer::T_CLOSE_PARENTHESIS,得到 ','
我能让这个工作吗?
从表达式生成器:
/**
* Creates an instance of COUNT(DISTINCT) function, with the given argument.
*
* @param mixed $x Argument to be used in COUNT(DISTINCT) function.
*
* @return string
*/
public function countDistinct($x)
{
return 'COUNT(DISTINCT ' . implode(', ', func_get_args()) . ')';
}
看起来这应该有效。
用于将来的情况
以前
public function countDistinct($x)
{
return 'COUNT(DISTINCT ' . implode(', ', func_get_args()) . ')';
}
后
public function countDistinct($x)
{
return 'COUNT(DISTINCT CONCAT(' . implode(', ', func_get_args()) . '))';
}