如何在 select 中更改学说查询生成器表达式的 selected 名称

How to change the selected name of a doctrine querybuilder expression inside of a select

我正在尝试更改来自以下原则查询的返回数组:

['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 正确写入此子表达式。

Expr class 只不过是一组编写表达式的助手。没有什么能阻止您将它与字符串组合:

// $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 函数.