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

如何在select中更改doctrine querybuilder表达式的选定名称,doctrine,doctrine-query,Doctrine,Doctrine Query,我正在尝试将条令查询返回的数组更改为: ['city' => 'Warsaw', '1' => '2'] 致: 我的查询如下所示: $queryBuilder = $this->createQueryBuilder('geo'); $queryBuilder->select([ 'geo.city', $queryBuilder->expr()->countDistinct('geo.id') ]); $queryBuilder->gr

我正在尝试将条令查询返回的数组更改为:

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

我的查询如下所示:

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

不确定如何将
作为计数正确写入此子表达式。

Expr类只不过是一组用于编写表达式的帮助程序。没有任何东西阻止您将其与字符串组合:

/$qb您的查询生成器
$qb->addSelect($qb->expr()->countDistinct('geo.id')。'AS geo_count');
如果您不喜欢混合expr和字符串,甚至可以直接编写DQL:

$qb->addSelect('COUNT(DISTINCT geo.id)作为geo_COUNT');

注意:我使用了
geo\u count
作为别名,因为DQL解析器会将
count
函数解释为
count

我正在寻找类似
countDistinct('geo.id')->as(geo\u count)
,但您的解决方案运行良好,尽管避免这两种解决方案的严格性是很好的。谢谢@tobias47n9e是的,我搜索的是相同的,但是
expr
类的
countDistinct
方法只需要一个参数,没有
as
方法。我想有人可以尝试实施它,并为此发送一份PR:)
$queryBuilder = $this->createQueryBuilder('geo');
$queryBuilder->select([
    'geo.city',
    $queryBuilder->expr()->countDistinct('geo.id')
]);
$queryBuilder->groupBy('geo.city');
$result = $queryBuilder->getQuery()->getResult();