如何使用FOSUserBundle的角色进行搜索?

时间:2014-04-16 14:24:22

标签: symfony

在控制器中,我需要按角色is_granted进行测试,但它不起作用,因为我需要为所有ROLE_ADMIN.i尝试这个但没有结果的所有人创建通知:$admins=$em->getRepository('RegisterUserBundle:User')->findByRoles("ROLE_ADMIN"); 但没有结果。

1 个答案:

答案 0 :(得分:1)

我认为findByRoles中没有默认的FOSUserBundle方法。

我想你应该在UserRepository中添加一个方法,如:

<?php
public function findByRole($role) {
    $qb = $this->_em->createQueryBuilder();
    $qb->select('u')
            ->from($this->_entityName, 'u')
            ->where('u.roles LIKE :roles')
            ->setParameter('roles', '%"' . $role . '"%');
    return $qb->getQuery()->getResult();
}  

然后在你的控制器中使用方法:

$users = $em->getRepository('YourUserBundle:User')->findByRole('ROLE_ADMIN');