2

スーパー管理者の役割を持つ管理者を除外しようとしています。以下が機能しないのはなぜですか?

public function findAdmins()
{
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb
        ->select('a')
        ->from('MyBundle:Admin', 'a')
        ->where($qb->expr()->notIn('ROLE_SUPER_ADMIN', 'a.roles'));

    $result = $qb->getQuery()->execute();

    return $result;
}

次のエラーが表示されます。

[Syntax Error] line 0, col 68: Error: Expected Literal, got 'a' 

DQL クエリは次のようになります。

SELECT a FROM MyBundle:Admin a WHERE ROLE_SUPER_ADMIN NOT IN(a.roles)  

ロール自体はエンティティではありません。これは単なる文字列の配列です。

$roles = array('ROLE_ADMIN', 'ROLE_SUPER_ADMIN)'
4

2 に答える 2