Doctrine гидратация левого соединения в подмассивы не работает - PullRequest
0 голосов
/ 13 января 2020

Использование doctrine Я хочу выполнить соединение и вернуть запрошенные объекты в массиве, сгруппированном в подмассивы для каждой строки. Сущность profile имеет непосредственное отношение к сущностям user. Но user сущности не имеют отношения к profile. Я хочу выбрать все user сущности с их соответствующей сущностью profile, если она существует, не отправляя другой запрос.

Desired result:
SELECT user, profile LEFT JOIN profile ON user = profile
->
[
  [
    profileInstance,
    userInstance
  ],
  ...
]

Я пробовал следующий запрос, но он не работает, в лучшем случае я получаю один размерный массив с чередующимися записями между user и profile.

$this->entityManager
    ->createQueryBuilder()
    ->select("u", "p")
    ->from(User::class, "u")
    ->leftJoin(Profile::class, "p", "WITH", "u.id = p.user")
    ->orderBy("u.id")
    ->setMaxResults($step)
;

, который возвращает формат:

[
  User,
  Profile,
  User,
  Profile
]
...