首页 > 解决方案 > Doctrine ORM 查询构建器获取键值对

问题描述

我在实体存储库中有以下代码:

$rows = $this->createQueryBuilder('t')
    ->select(['t.idColumn', 't.valueColumn'])
    ->where('t.foo = :foo')
    ->orderBy('t.idColumn', 'ASC')
    ->setParameter('foo', $foo)
    ->getQuery()
    ->getArrayResult(); // This returns [[idColumn => ..., valueColumn => ...], ...]
$data = [];

foreach ($rows as $row) {
    $data[$row['idColumn']] = abs($row['valueColumn']); // Remapping to [id => value]
}

return $data;

有什么办法可以在本地摆脱自定义重新映射?我知道您可以使用 indexBy 参数,但这只会让我得到正确的键而不是值。

PS我知道array_column(),但这是我每次都必须做的额外步骤,更不用说它不适用于实体拥有的方法。

PPS 这不是使用 Symfony。

标签: phpdoctrine-orm

解决方案


看起来这不是 QueryBuilder 中实现的功能,但是 fetchAllKeyValue 是在 DBAL 2.11 中添加到Connection对象中的。

提交,使用


推荐阅读