Из symfony 4, когда я использую метод findAll, я получаю ассоциативный массив объектов моей сущности, где каждый ключ является одним из объектов моей сущности.
Я ищу красивый способ получить вместо этого ассоциативный массив, где ключ - это значение определенного поля моей сущности, а значение - объект моей сущности.
На практике, когда я использую findAll, я получаю следующее:
Array
(
[0] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 1
[name:App\Entity\Foo:private] => nameValue1
)
[1] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 2
[name:App\Entity\Foo:private] => nameValue2
)
[2] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 3
[name:App\Entity\Foo:private] => nameValue3
)
...
)
Но вместо этого я хочу это:
Array
(
["nameValue1"] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 1
[name:App\Entity\Foo:private] => nameValue1
)
["nameValue2"] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 2
[name:App\Entity\Foo:private] => nameValue2
)
["nameValue3"] => App\Entity\Foo Object
(
[id:App\Entity\Foo:private] => 3
[name:App\Entity\Foo:private] => nameValue3
)
...
)




Чтобы получить эту функциональность, вы должны реализовать свою собственную функцию в репозитории класса Foo и использовать QueryBuilder's indexBy():
<?php
namespace App\Repository;
use Doctrine\ORM\EntityRepository;
class FooRepository extends EntityRepository
{
public function findAllIndexed()
{
$qb = $this->createQueryBuilder('foo');
$query = $qb->indexBy('foo', 'foo.name')->getQuery();
return $query->getResult();
}
}
Теперь вы просто вызываете $repository->findAllIndexed() вместо функции $repository->findAll().
Похоже, это не связано с функцией findAllIndexed. Пожалуйста, используйте дамп ($ query-> getResult ()); перед оператором return внутри findAllIndexed (), чтобы вы могли точно видеть, что возвращает эта функция.
Это уведомление было из другого места моего кода, это было моей проблемой!
Это кажется идеальным! спасибо :) однако, когда я вызываю findAllIndexed, я получаю предупреждение Notice: Undefined offset: 1, это проблематично?