使用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()
请求的键,但是我发现它很重。
您可以在findBy方法或FindAll方法之后:
创建一个foreach方法($ results为$ result)
$newResult = [];
$results = $repo->findAll();
foreach ($results as $result) {
$newResult[$result->getId()] = $result;
}