2013-07-23 65 views
1

在FosUserbundle中,如何通过特定角色查找用户。我也实现了Group,所以Roles数组也来自Group-> getRoles。有没有办法使用QueryBuilder不循环通过数据库的所有用户?FosUserBundle按角色(和组角色)查找用户

+0

我想这可能会回答你的问题:http://stackoverflow.com/questions/9016914/symfony-2-fos-bundle-how-to -select-users-with-a-specific-role – Tocacar

+1

这里的问题是User与Group有一对多的关系,并且在每个组中都有一个角色数组。我已经看到了这个答案,但它只是对没有Group实体的简单情况有帮助 –

回答

3

所以你只需要添加一个从用户到组的联接到角色,角色=你正在寻找的角色。这只是一个简单的连接查询。

事情是这样的:

$qb->select("u") 
     ->from("YourUserBundle:User", "u") 
     ->join("u.Group", "g") 
     ->join("g.Role", "r") 
     ->where("r.role = :role"); 
    $query = $qb->getQuery(); 
    $query->setParameter("role", $role); 

    $results = $query->getResult(); 

View the gist