получить вывод массива в качестве значения ключа в doctrine querybuilder - PullRequest
1 голос
/ 09 апреля 2020

У меня есть две таблицы, например

студент

id name

1  John

2  Doe

предмет

id  sub   student
 1  eng    1
 2  maths  1

У меня есть следующий запрос к репозиторию студентов

$this->createQueryBuilder('stud')
                ->select('stud.name,s.sub')
                ->leftJoin('AppBundle:subject', 's', 'WITH', 's.student = stud.id')
                ->getQuery()
                ->getArrayResult();

Но я получаю 3 ряда с 2 рядами в виде Джона с другим сабвуфером и одним рядом с Доу. Как я могу сделать это две строки с подпрограммой в виде массива на результат? Я новичок в написании запросов. Надеюсь, что кто-то может помочь

Получение результата

array:3 [▼
  0 => array:2 [▼
    "name" => John
    "sub" => maths
  ]
  1 => array:2 [▼
    "name" => John
    "sub" => eng
  ]
 2 => array:2 [▼
    "name" => Doe
    "sub" => null
  ]
]

Ожидаемый результат

array:2 [▼
  0 => array:2 [▼
    "name" => John
    "sub" => array:2['eng','maths']
  ]
 2 => array:2 [▼
    "name" => Doe
    "sub" => null
  ]
]

1 Ответ

0 голосов
/ 09 апреля 2020

LEFT JOIN возвращает все записи из левой таблицы (здесь: студент) и сопоставленные записи из правой таблицы (здесь: тема). Результат равен NULL с правой стороны, если совпадений нет (здесь: студент с идентификатором: 2).

Здесь вы должны выбрать из предмет , затем LEFT JOIN его с помощью студенты . это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...