我有一个包含大量数据的项目。我需要根据用户角色/组/权限进行查询。这意味着像
这样的查询$fooRepository = $this->getDoctrine()
->getManager()
->getRepository(Foo::class)
->findAll();
如果由ROLE_SUPER_ADMIN或ROLE_USER完成,应返回不同的记录。另外,我需要根据关系等过滤记录。
我有不同的解决方案:
在这种情况下,每个存储库都应负责提供正确的数据。这是类似to this的解决方案。在该解决方案中,记录由租户过滤。
在这种情况下,我需要创建不同的存储库并以不同方式实例化它们。但我不认为这在学说上很容易吗?在我写作的时候......我认为这是一个夸张的解决方案。
目前我认为这是更自然的查询方式。我只是想象一个存储库应该包含
+ findAllStuffForGuestRole()
+ findAllStuffForAdminRole()
每次我需要添加查询时,我必须创建不同的查询。
答案 0 :(得分:1)
我认为Doctrine filters是解决问题的最简洁,最简单的方法。请参阅documentation
答案 1 :(得分:0)
这实际上与Symfony / Doctrine非常直接。这是官方文档中的一个很好的页面,它比我更好地解释了它:http://symfony.com/doc/current/doctrine/repository.html