【发布时间】:2014-07-08 00:01:03
【问题描述】:
我正在使用 Symfony 2 构建一个 Saas / 多租户应用程序。我创建了一个 Doctrine 事件订阅者来添加和更新行的所有者、创建它的用户、修改它的用户、时间戳等等.
现在我需要实现某种过滤器,这样当用户登录时,他只能看到来自他公司的数据。我的第一个虽然是使用 Doctrine preLoad 事件,但这个事件不存在......据我所知,我必须使用 Doctrine 过滤器,不是吗?如果是这样,此过滤器如何访问用户数据以读取公司 ID?我必须使用依赖注入来注入它吗?有什么标准方法可以实现我的目标吗?
更新 我正在寻找的是创建某种 Doctrine 插件/挂钩,所以每次我调用从数据库中获取数据的任何函数(find、findOneBy 等),并且我正在获取的实体实现了一个特定的接口,一个额外的'AND company_id=:id' SQL 序列被添加到生成的查询中,因此控制器或模型都不会接收来自其他公司的数据。
【问题讨论】:
-
也许这个答案可以帮助你:stackoverflow.com/a/15809800/3059764
标签: php symfony doctrine-orm multi-tenant saas