簡體   English   中英

在多對多關系學說中查詢2

[英]Query in ManyToMany Relation Doctrine2

這真讓我抓狂。

我有一個普通的Symfony2安全系統,其中的用戶和角色實體之間具有ManyToMany關系。

假設我在數據庫中有3個角色, ROLE_1ROLE_2ROLE_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM