教义多对多关系不在[加入]

时间:2014-01-13 15:48:39

标签: sql doctrine-orm dql

我有2个表与多对多关系=>用户,角色。

我需要找到所有不属于任何角色的用户。

在SQL中可以完成:

SELECT *
FROM `user`
WHERE `id` NOT
IN (
    SELECT `user_Id`
    FROM user_role
)

user_role是来自userrole的多对多关系的加入表。

如何使用DQL获得相同的结果?

更新

user_role表是来自学说的自动映射,如果我尝试使用它,我会得到“未找到实体”

要求更好:

如何使用CreateQueryBuilder执行相同的结果?

我无法在我的实体中使用user_role表,因为它是使用多对多关系注释自动生成的(或者我可以使用它吗?)。

2 个答案:

答案 0 :(得分:0)

你的方式应该能得到你想要的结果或者你可以加入像这样的

SELECT *
FROM user u LEFT OUTER JOIN user_role ur
ON u.id = ur.user_Id
WHERE ur.user_Id IS NULL

答案 1 :(得分:0)

这应该有效:

SELECT u
FROM user u
LEFT JOIN u.roles r
WHERE r IS NULL