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" => ...
]