2014-01-13 65 views
0

我有2個表與多對多的關係=>用戶,角色。學說多對多關係不在[可加入]

我需要找到所有不在任何角色的用戶。

在SQL是可以做到的:

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

user_role是很多人的加盟表從userrole一對多的關係。

如何才能獲得與DQL相同的結果?

UPDATE

user_role表是從學說的自動映射,如果我嘗試使用它,我得到

問更好「找不到實體」:

我該怎麼辦與CreateQueryBuilder相同的結果?

我無法在我的實體中使用user_role表,因爲它是使用多對多的relathionhip註釋自動生成的(或者我可以使用它嗎?)。

+0

'不IN'將成爲'NOT EXISTS '在'DQL' – sroes

回答

0

這應該工作的方式:

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

顯然這項工作!謝謝! – Raffaello

0

你正在做應該得到你所需要的結果,或者你可以做一個加入這樣的事情

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