Symfony - 只访问他们自己的客户

Symfony - Acces only to their own customers

我有这些实体

User

(ManyToMany)

Customer (OneToOne --> a customer can have a related customer)

我的应用程序有效。现在我想管理权限。 当用户登录时,我只想显示与他相关的客户和与儿童客户相关的客户。

例如,

我想我必须覆盖 Doctrine Repository 或使用 EntityManagerDecorator 我只是问什么是计算它的最佳实践? 谢谢!

基本上,像搜索特定数据这样的操作应该委托给存储库。最终,如果您必须搜索不同的数据源,您可以为此特定职责创建一个服务并注入所需的依赖项。在你的情况下,我会说你不需要 ovveride 任何东西,只需创建一个 UserRepository 并在那里编写一个函数来满足你的需要。

看看这个: https://symfony.com/doc/3.3/doctrine/repository.html

你为什么不在你的 customerRepository 中创建你自己的自定义 findAll() 函数来过滤你的用户?

类似

public function findAllRelatedToUser(User $user)
{
    return $this->createQueryBuilder('c')
                    ->innerJoin('c.user', 'u')
                    ->andWhere('u.id = :user_id')
                    ->setParameter('user_id', $user->getId())
                    ->getQuery()
                    ->getResult();
}

终于找到更好的方法了

原则过滤器

在内核上监听请求,如果涉及我的实体,应用我的过滤器(添加 WHERE id= xx)

我用这个: http://blog.michaelperrin.fr/2014/12/05/doctrine-filters/