Doctrine DQL - 计算不同的多列

时间:2018-01-20 12:37:02

标签: sql doctrine-orm dql

我在计算某些聚合时遇到问题。

部分代码如下所示:

$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()) . ')';
}

看起来这应该有效。

1 个答案:

答案 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()) . '))';
}