我的Symfony2项目中有三个实体:
第四个实体代表上述三个之间的关系:
现在,我需要以某种方式加载用户及其组和组织的提取连接查询。我虽然喜欢这样的东西:
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 :(得分:0)
你根本不应该提及或加入'uog'表。
SELECT User u,o,g
INNER JOIN u.organisation AS o
INNER JOIN u.group AS g
避免使用像Group这样的保留字来命名实体。