0

我需要能够在分页表中显示所有 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()可能不是去这里的方式。哦!

4

2 回答 2

3

我认为将团队中的每个角色结合起来并与团队合作会更好。特别分配和拒绝角色组变得更容易,因为它是一个简单的关系。查询特定组也很容易。

于 2013-05-20T13:55:32.470 回答
2

该符号是 PHP 数组的序列化 - 这意味着FOSUserBundle不会规范用户角色关系。

但是您可以提供自己的用户类并重载角色 getter/setter,或者如果您不必处理那么多用户,您可以通过获取所有用户并按角色过滤来重载用户存储库。

一个肮脏的技巧是LIKE在角色字段上进行搜索,因为角色名称仍然是可读的,但这会有点糟糕的性能。

您可以在此存储库问题中找到更多信息。

于 2013-05-20T13:43:58.480 回答