Как изменить иерархию результатов массива в Doctrine с объединенными таблицами - PullRequest
0 голосов
/ 04 ноября 2019

Мой запрос с объединением: (в сущностях нет отношений)

    $query = $this
        ->createQueryBuilder('f')
        ->select('f');

    $query->leftJoin(IntranetType::class, 'it', 'WITH', 'it.flyerLayoutType = f.flyerLayout');
    $query->addSelect('it');

    $query->orderBy('f.filename');
    $query->addOrderBy('it.flyerLayoutType');

    // $flyers = $query->getQuery()->getArrayResult(); <-- fist try
    $flyers = $query->getQuery()->getResult(Query::HYDRATE_ARRAY);

И массив результатов имеет формат:

array(149) {
[0]=>
array(9) {
 data from table with alias f
}
[1]=>
array(4) {
 data from table with alias it
}
[2]=>
array(9) {
 data from table with alias f
}
[3]=>
array(4) {
 data from table with alias it
}

Но мне нужен такой формат:

array(149) {
[0]=>
array(9) {
 data from table with alias f
  ['joined table']=>
  array(4) {
   data from table with alias it
  }
}

[1]=>
array(9) {
 data from table with alias f
  ['joined table']=>
  array(4) {
   data from table with alias it
  }
}

Просто иерархия ... Один ключ в массиве = один флаер (один элемент) и с объединенными данными ...

1 Ответ

0 голосов
/ 04 ноября 2019

Кажется, вам нужно просто удалить аргумент из getResult() (или заменить его на значение по умолчанию ::HYDRATE_OBJECT).

Ключ 'объединенная таблица' не появится, но вы получите структуру данных в соответствии с вашимсущности.

...