如何在select中更改doctrine querybuilder表达式的选定名称

时间:2018-02-19 10:40:16

标签: doctrine doctrine-query

我正在尝试从以下的学说查询中更改返回的数组:

['city' => 'Warsaw', '1' => '2']

为:

['city' => 'Warsaw', 'count' => '2']

我的查询如下:

$queryBuilder = $this->createQueryBuilder('geo');
$queryBuilder->select([
    'geo.city',
    $queryBuilder->expr()->countDistinct('geo.id')
]);
$queryBuilder->groupBy('geo.city');
$result = $queryBuilder->getQuery()->getResult();

不确定如何正确地将AS count写入此子表达式。

1 个答案:

答案 0 :(得分:1)

Expr类只不过是一组用于编写表达式的助手。没有什么能阻止你将它与字符串结合起来:

// $qb your query builder
$qb->addSelect($qb->expr()->countDistinct('geo.id') . ' AS geo_count');

如果您不喜欢混合使用expr和字符串,您甚至可以直接编写DQL:

$qb->addSelect('COUNT(DISTINCT geo.id) AS geo_count');

注意:我使用geo_count作为别名,因为您无法使用count,因为它将被DQL解析器解释为COUNT函数。