Доктрина Symfony выполняет левое соединение и получает все результаты - PullRequest
0 голосов
/ 28 августа 2018

Я использую Symfony 2, у меня есть этот запрос, и я хочу получить все имена контактов всех пользователей:

$results = $es->createQueryBuilder()
->select('m.id, d.contactName')
->from('AppBundle:Profile', 'm')
->leftJoin('AppBundle:Contacts', 'd','with','d.profileid = m.id')
->groupBy('m.id')
->getQuery()
->getResult();

Проблема в том, что когда я хочу отобразить имя контакта для пользователя, я получаю только одно имя. Я мог бы использовать цикл for для каждого пользователя, но я не могу использовать это в данный момент. Я хочу иметь возможность отображать все имена без цикла

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 29 августа 2018

Итак, кажется, что Profile и Contacts связаны с каким-то отношением, но вы все еще используете profileid для обеспечения этих отношений - это полностью устарело.

Что касается возвращаемого единственного результата, я думаю, что вы используете groupBy неправильным образом, но я не могу сказать наверняка, не видя сущностей в игре.

Несмотря на это, в этой ситуации я бы определенно использовал функцию getArrayResult() (вместо getResult()), которая будет возвращать массив. Попробуйте также удалить groupBy и посмотреть, что вы получите.

Я могу расширить свой ответ, как только вы обновите свой вопрос с помощью сущностей.

...