我需要能够在分页表中显示所有ROLE_ADMIN和ROLE_SUPER_ADMIN用户。我有使用Doctrine的findBy()
方法正确显示所有人的表格,但我对如何按角色过滤有点困惑。角色保存为DC2Type:array
,角色数据本身看起来有点像JSON:
a:1:{i:0;s:9:"ROLE_USER";}
有了这个,我很好奇要传入findBy()
以选择所有ROLE_ADMIN和ROLE_SUPER_ADMIN用户。
换句话说:
$users = $em->getRepository('Acme\SiteBundle\Entity\User')->findBy(array(/* what do I put here? */), array('id' => 'asc'), $perPage, $perPage * ($page - 1));
编辑:嗯......看起来findBy()
可能不是最后去的地方。 D'哦!
答案 0 :(得分:3)
我认为将group中的每个角色联合起来并与群组合作会更好。特别分配和拒绝角色组变得更容易,因为它是一个简单的关系。查询特定组也很容易。
答案 1 :(得分:2)
该表示法是PHP数组的序列化 - 这意味着FOSUserBundle
不会规范用户角色关系。
但是你可以提供自己的用户类并重载角色getter / setter,或者如果你不需要处理那么多用户,你可以通过获取所有用户并按角色过滤来重载用户存储库。
一个肮脏的黑客攻击是在角色字段上发出LIKE
搜索,因为角色名称仍然可读,但这样做会有点糟糕。
您可以在this repository issue找到更多信息。