我正在尝试过滤掉具有超级管理员角色的管理员。为什么以下不起作用?
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)'