Упрощение запроса в symfony2 - PullRequest
1 голос
/ 07 января 2012

(я не уверен, как сделать название более понятным - не стесняйтесь редактировать его)

У меня есть две таблицы с винами и винодельнями .Каждое вино имеет одну винодельню.
Если я хочу составить список всех вин с соответствующей винодельней, я могу сделать это:

$entities = $em->getRepository('MyBundle:Wine')->findAll();

и

{% for entity in entities %}
  {{ entity.winery.name }} {{ entity.name }} <br />
{% endfor %}

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

Я попробовал метод, использованный в руководстве symfony2 , но мне не удалось заставить его работать (работает ли он только для одного результата?).

Обычно сSQL, я бы просто сделал LEFT JOIN, но я просто не могу понять, как это сделать в Doctrine2.

$qb = $this->createQueryBuilder('w', 'wnr');
$qb->leftJoin('w.winery', 'wnr');
$qb->orderBy('w.name', 'ASC');

$qb->getQuery()->getResult();

???

Я был бы благодарен за любыепомощь!

1 Ответ

3 голосов
/ 07 января 2012

Вы выбрали Winery в своем DQL-запросе?

$entities = $em->getRepository('MyBundle:Wine')
    ->createQueryBuilder('w')
    ->select('w, wnr')
    ->leftJoin('w.winery', 'wnr');
    ->getQuery()
    ->getResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...