Doctrine 2 leftJoin, с отношением many-to-many, возвращено неправильное количество строк.

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

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

----------------------------------
| user_id    |   attraction_id   |
----------------------------------
| 4              1               |
| 4              2               |
| 4              3               |
----------------------------------

Для двух моделей, Пользователь и Привлечение, где Пользователь является владельцем отношения.

Когда я выполняю этот запрос:

$attractions = $CI->em->createQueryBuilder()
        ->select('a', 'u')
        ->from('\ListLovers\Model\Attraction', 'a')
        ->leftJoin('a.users', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'u.id = 4')
->getQuery()->getResult();

Мои пользователи считают аттракцион с идентификатором 1 равным 1. Отлично!

Теперь, если я добавлю еще одну строку в таблицу соединения, например:

----------------------------------
| user_id    |   attraction_id   |
----------------------------------
| 1              1               |
| 4              1               |
| 4              2               |
| 4              3               |
----------------------------------

...и выполню тот же запрос, число моих пользователей для привлечения с идентификатором 1 будет ...НУЛЬ. Что за?

Я что-то упустил?

Спасибо, Отметка.

6
задан koosa 18 April 2012 в 18:23
поделиться