无法更改find All()和findBy()函数的INDEXBY

问题描述 投票:0回答:1

使用Doctrine和Symfony 5,我想使用findAll()findBy()函数更改查询的INDEX BY。我希望结果表的键只是ID。

// Current result
[
    0 => Post {
        'id' => 5,
        'name' => 'Test 5',
    },
    1 => Post {
        'id' => 6,
        'name' => 'Test 6',
    },
]
// Desired result :
[
    5 => Post {
        'id' => 5,
        'name' => 'Test 5',
    },
    6 => Post {
        'id' => 6,
        'name' => 'Test 6',
    },
]

我知道我可以使用createQueryBuilder('post', 'post.id'),但是在这种情况下,由于我自己进行查询,因此我丢失了fetch = EAGER

也许唯一的解决方案是执行foreach()来更改每个findAll()findBy()请求的键,但是我发现它很重。

symfony doctrine-orm doctrine
1个回答
0
投票

您可以在findBy方法或FindAll方法之后:

创建一个foreach方法($ results为$ result)

$newResult = [];
$results = $repo->findAll();
foreach ($results as $result) {
    $newResult[$result->getId()] = $result;
}
© www.soinside.com 2019 - 2024. All rights reserved.