2013-08-21 56 views
2

我有三個實體在我的Symfony2項目連接查詢:學說魂在三個表

  • 用戶
  • 集團
  • 組織

第四實體表示上述三個關係:

  • UserOrganisationGroup {userI d,organisationId,groupId}

現在,我需要fetch連接查詢,以某種方式將加載用戶及其組和組織。我雖然是這樣的:

SELECT u, g, o, uog 
FROM Yocto\Bundle\UserBundle\Entity\User u 
JOIN u.userOrganisationGroup uog 
JOIN uog.organisation o 
JOIN uog.group g 
WHERE uog.user = 1 

但我得到的是用戶實體,組織和組似乎是NULL。我究竟做錯了什麼?我知道一個事實,即數據庫具有記錄如下:

User 
id | 1 

Organisation 
id | 1 

Group 
id | 1 

UserOrganisationGroup 
userId   | 1 
groupId  | 1 
organisationId | 1 



array(1) { 
    [0]=> 
    object(stdClass)#490 (15) { 
    ["__CLASS__"]=> 
    string(35) "UserBundle\Entity\User" 
    ["id"]=> 
    int(1) 
    ["userOrganisationGroup"]=> 
    array(1) { 
     [0]=> 
     object(stdClass)#502 (4) { 
     ["__CLASS__"]=> 
     string(52) "UserBundle\Entity\UserOrganisationGroup" 
     ["user"]=> 
     object(stdClass)#507 (15) { 
      ["__CLASS__"]=> 
      string(35) "UserBundle\Entity\User" 
      ["id"]=> 
      int(1) 
      ["userOrganisationGroup"]=> 
      array(1) { 
      [0]=> 
      object(stdClass)#525 (4) { 
       ["__CLASS__"]=> 
       string(52) "UserBundle\Entity\UserOrganisationGroup" 
       ["user"]=> 
       string(35) "UserBundle\Entity\User" 
       ["group"]=> 
       NULL 
       ["organisation"]=> 
       NULL 
      } 
      } 
     } 
     ["group"]=> 
     NULL 
     ["organisation"]=> 
     NULL 
     } 
    } 
    } 
} 

回答

0

你不應該提及或加入「UOG」表在所有。

SELECT User u,o,g 
INNER JOIN u.organisation AS o 
INNER JOIN u.group AS g 

避免使用像Group這樣的保留字命名實體。

+0

不是。用戶沒有名爲組織的關聯。 @Djuro Mandinic – user2091545

+0

下面的SQL查詢代表我想達到的目標:SELECT u.username, acl_organisations.name, acl_groups.name AS組名 FROM acl_usersü JOIN acl_userOrganisationGroups ON u.id = acl_userOrganisationGroups.user_id JOIN acl_organisations ON acl_userOrganisationGroups.organisation_id = acl_organisations.id JOIN acl_groups ON acl_userOrganisationGroups.group_id = acl_groups.id WHERE u.id = 1 – user2091545