如何有效地根据他们在Symfony2 + Doctrine中的角色列出用户

时间:2011-11-26 03:14:05

标签: symfony doctrine-orm

我用这段代码完成了这个

$users = $this->getDoctrine()->getEntityManager()
            ->createQuery('SELECT tu FROM UserBundle:User tu')
            ->getResult();

$result = array();

foreach($users as $user){
if($user->hasRole('ROLE_CUSTOMER'))
    $result[] = $user;
}

return $this->render('XBundle:Order:index.html.twig', 
          array('users' => $result));

但实现同样结果的简单方法是什么?

感谢。

更新,附加信息:

我们的主要问题是用户角色具有层次结构。

如果我在ROLE_EDITOR下定义了ROLE_WRITER,那么ROLE_EDITOR将自动拥有ROLE_WRITER。

因此我不能只使用简单的查询,我想我也必须利用安全上下文组件。

2 个答案:

答案 0 :(得分:0)

我不知道您的架构,但我想您可以执行INNER JOIN并将您的条件置于ON子句中。阅读this article about the query builder以了解如何构建查询。

答案 1 :(得分:0)

Doctrine集合还有一个filter方法,它以Closure为参数。