我用这段代码完成了这个
$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。
因此我不能只使用简单的查询,我想我也必须利用安全上下文组件。
答案 0 :(得分:0)
我不知道您的架构,但我想您可以执行INNER JOIN
并将您的条件置于ON
子句中。阅读this article about the query builder以了解如何构建查询。
答案 1 :(得分:0)
Doctrine集合还有一个filter
方法,它以Closure
为参数。