Symfony 5, Doctrine. Вывод данных в виде ассоциативного массива

Делаю запрос

$qb = $this->createQueryBuilder('p') ->select('p', 'd') ->leftJoin( AudioBook::class, 'd', 'WITH', ' p.id = d.product') ;

$res = $qb->getQuery()->getArrayResult();

И получаю примерно такую структуру данных

[0] => array(3) {       
    ["name"]=>string(9) "Brassicas"
    ["id"]=> int(13)
}
[1] =>
    array(3) {
    ["garden"]=> string(1) "1"
    ["id"]=> int(18)
    }

то есть я объединяю две таблицы и получаю два массива где первый соответствует первой таблице, второй второй таблице.

Можно ли как-то вывести эти данные в виде ассоциативного массива? Что-то типа

[
 "firstEntity" => [],
"secondEntity => []
]

Ответы (1 шт):

Автор решения: Dmitry Kozlov

Поскольку Вы используете алиасы в select, то и возвращаются два элемнта массива. Если хотите получить ассоциативный массив, то указывайте выбираемые поля

$qb = $this->createQueryBuilder('p')
    ->select('p.id as pId, p.name as pName, d.id as dId, d.garden as dGarden')
    ...
$query = $qb->getQuery();
$result = $query->getResult(AbstractQuery::HYDRATE_ARRAY);

тогда у вас получится массив

[
    "pId" => ...
    "pName" => ...
    "dId" => ...
    "dGarden" => ...
]
→ Ссылка