[英]Query in ManyToMany Relation Doctrine2
這真讓我抓狂。
我有一個普通的Symfony2安全系統,其中的用戶和角色實體之間具有ManyToMany關系。
假設我在數據庫中有3個角色, ROLE_1
, ROLE_2
和ROLE_3
。
例如,如何檢索沒有ROLE_3
所有用戶?
我已經嘗試過類似的東西:
$qb->innerJoin('u.roles', 'r , 'WITH', $qb->expr()->notIn('r.id', ':roles')))
->setParameter('roles', array(3));
我的問題是,如何在JoinTable中查詢?
這比Symfony或教義問題更像是一個SQL問題。 我想到的第一個解決方案是子查詢,盡管這可能是也可能不是處理此問題的最有效方法。 像這樣:
SELECT username
FROM users
WHERE users.id NOT IN (
SELECT users.id
FROM users
INNER JOIN user_roles
ON users.id = user_roles.user_id
INNER JOIN roles
ON user_roles.role_id = roles.id
WHERE roles.id NOT IN (1,2)
);
其中1和2是要包含在結果中的角色的ID, user_roles
是用戶和角色之間的橋梁表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.