FOSUserBundle&用户角色

时间:2018-01-29 15:28:36

标签: symfony fosuserbundle

这是我从db:

中检索用户的代码
$qb = $this->createQueryBuilder('c');

    $qb->select('c.username')
        ->where('c.username LIKE :term')
        ->setParameter('term', '%' . $term . '%')
        ->where('c.roles LIKE :role')
        ->setParameter('role', '%"ROLE_COM"%');

    $arrayAss = $qb->getQuery()
        ->getArrayResult();

我想只选择具有admin角色的用户,但没有任何作用。

寻求帮助

3 个答案:

答案 0 :(得分:0)

尝试使用isGranted('ROLE_ADMIN')方法。

有关此方法的详细信息:https://symfony.com/doc/current/security.html

答案 1 :(得分:0)

问题以这种方式解决了:

        $qb->select('c.username')
        ->where('c.username LIKE :term AND c.roles LIKE :role')
        ->setParameter('term', '%' . $term . '%')
        ->andWhere('c.roles LIKE :role')
        ->setParameter('role', '%"ROLE_COM"%')
    ;

答案 2 :(得分:0)

角色param不应该有引号,第二个“where”应该是“andWhere”。试试这样它应该有效。

$qb->select('c.username')
    ->where('c.username LIKE :term')
    ->setParameter('term', '%' . $term . '%')
    ->andWhere('c.roles LIKE :role') // andWhere for second conditional
    ->setParameter('role', '%ROLE_COM%'); // Lose the quotes here.

$arrayAss = $qb->getQuery()
    ->getArrayResult();