可以说学说提供由用户角色,组或权限过滤的记录



我有一个具有大量数据的项目。我需要根据用户角色/组/权限进行查询。这意味着像

这样的查询
$fooRepository = $this->getDoctrine()
    ->getManager()
    ->getRepository(Foo::class)
    ->findAll();

如果由cole_super_admin或cool_user完成,则应返回不同的记录。另外,我需要根据关系过滤记录,依此类推。

我有不同的解决方案:

  • 在存储库查询中注入用户角色
  • 创建基于角色的存储库
  • 为每个角色创建一个查询

在存储库查询中注入用户角色

在这种情况下,每个存储库应负责提供正确的数据。这是类似于此的解决方案。在该解决方案记录中,租户过滤。

创建基于角色的存储库

在这种情况下,我需要创建不同的存储库并以不同的方式实例化。但是我不认为这在学说上很容易吗?当我写作时,...我认为这是一个夸张的解决方案。

为每个角色创建查询

目前,我认为这是进行查询的更自然的方法。我只是想象存储库应包含

+ findAllStuffForGuestRole()
+ findAllStuffForAdminRole()

每次我需要添加查询时,都必须创建不同的查询。

我认为教义过滤器是解决问题的最干净,最简单的方法。请参阅文档

这实际上对Symfony/Doctrine非常简单。这是官方文档中的一个很棒的页面,它比我更好地解释它:http://symfony.com/doc/current/doctrine/repository.html

相关内容

  • 没有找到相关文章

最新更新