2014-06-15 5 views
0

Я тщательно разобрал SO и Google, однако я не могу найти ответ на этот очень простой вопрос.Doctrine2 SELECT Query with JOIN

У меня есть следующие объекты в Symfony2

ADR\PortalBundle\Account 
ADR\UserBundle\User (FOSUserBundle) 

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

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

$query = $em->createQuery(
     'SELECT u, a 
     FROM ADRUserBundle:User u 
     JOIN ADRPortalBundle:Account a 
     WHERE u.id = :userId' 
     )->setParameter('userId', $this->getUser()->getId()); 

Это возвращает мне отдельные данные учетной записи, а также все счета.

То, что я действительно хочу, это данные учетной записи для данного конкретного пользователя.

Отменив запрос, так что FROM является объектом учетной записи, а JOIN является сущностью пользователя. Я получаю обратную, одну учетную запись и всех пользователей в базе данных.

ответ

1

Возможно, это происходит потому, что вы фактически не присоединяетесь к таблицам в определенном поле.

Так что вам нужно будет что-то вроде (я использую u.account как свойство пользователя, которое ссылается на учетную запись)

JOIN ADRPortalBundle:Account u.account a 

Вы также можете взглянуть на: http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html.