【发布时间】:2017-04-12 09:26:22
【问题描述】:
我目前正在为我们的一位客户寻找一种在多个 Symfony2 应用程序之间共享用户的方法。在过去的 3 年中,我们为他们制作了一些应用程序 (4),它们具有不同的目的,但始终使用“相同”的用户模型和数据。
目前,我们有 4 个独立的数据库,其中的“用户”表在所有应用程序上都差不多,除了多对多关系。起初,我正在考虑添加第二个实体管理器(和连接),并将用户放在单独的数据库中。所有应用程序都可以使用它,并且所有用户都将拥有相同的凭据。但是如何处理多对多关系呢?
举个例子,在应用程序 A 上,您有一个从“用户”到“客户”的多对多关系,但应用程序 B/C/D 中不存在“客户”表。在应用程序 B 上,您有从“用户”到“供应商”的多对多关系,但应用程序 A/C/D 等中不存在“供应商”表。将“客户”或“供应商”表移动到共享数据库也不是一个真正的选择,因为其他实体(未共享)也与这些表有关系。
我基本上需要找到一种方法来映射“共享用户”模型/数据库上的多对多关系,这些关系对于每个应用程序都是唯一的。有没有办法通过多个数据库实现这一点?我应该采取其他方法吗?
欢迎提供所有信息。提前致谢。
【问题讨论】:
-
我认为的第一件事是,使用 Doctrine 的关系映射不是强制性的,它仅用于数据库关系。您还可以在实体内手动填充数组。大多数情况下,您需要将 UserManager(或 UserHelper)类添加到服务容器中。然后你可以做类似 $user = userHelper->loadByUsername($username);或 userHelper->update($user);
标签: php database symfony database-design fosuserbundle