我有 2 个表,多对多关系 => 用户、角色。
我需要找到所有不具有任何角色的用户。
在SQL中可以完成:
SELECT *
FROM `user`
WHERE `id` NOT
IN (
SELECT `user_Id`
FROM user_role
)
user_role
是来自user
和role
的多对多关系的连接表。
如何获得与DQL
相同的结果?
更新
user_role
表是来自教义的自动映射,如果我尝试使用它,我会得到"找不到实体"
问得更好:
我怎样才能用CreateQueryBuilder
做同样的结果?
我无法在我的实体中使用 user_role 表,因为它是使用多对多关系注释自动生成的(或者我可以使用它吗?
这应该有效:
SELECT u
FROM user u
LEFT JOIN u.roles r
WHERE r IS NULL
你正在做的方式应该让你得到所需的结果 或者你可以做一个这样的加入
SELECT *
FROM user u LEFT OUTER JOIN user_role ur
ON u.id = ur.user_Id
WHERE ur.user_Id IS NULL