我在计算某些聚合时遇到问题。
部分代码如下所示:
$qb->select($qb->expr()->countDistinct('policy.calculation', 'policy.id'))
->getQuery()
->getSingleScalarResult();
在sql中,可以对多列进行计数,而且从DQL中我得到一个错误:
[语法错误]第0行,第40栏:错误:预期的Doctrine \ ORM \ Query \ 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()) . ')';
}
看起来这应该有效。
答案 0 :(得分:0)
对于将来的情况
之前
public function countDistinct($x)
{
return 'COUNT(DISTINCT ' . implode(', ', func_get_args()) . ')';
}
之后
public function countDistinct($x)
{
return 'COUNT(DISTINCT CONCAT(' . implode(', ', func_get_args()) . '))';
}