我想過濾出超級管理員角色的管理員。爲什麼以下不起作用?如何在dql中搜索一個實體的數組?
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)'
是'a.roles'你正在加入的一個集合? – prodigitalson