Php Symfony2-在多个应用程序之间共享用户
我目前正在为我们的一位客户寻找一种在多个Symfony2应用程序之间共享用户的方法。在过去3年中,我们为他们制作了一些应用程序(4),它们有不同的用途,但总是使用“相同”的用户模型和数据 目前,我们有4个独立的数据库,其中“users”表在所有应用程序上都是相同的,除了多对多关系。起初,我考虑添加第二个实体管理器(和连接),并将用户放在单独的数据库中。所有的应用程序都可以使用它,所有的用户都有相同的凭证。但是我如何处理多对多关系呢 举个例子,在应用程序A上,您有一个从“用户”到“客户”的多对多关系,但“客户”表在应用程序B/C/D中不存在。在应用程序B上,您有一个从“用户”到“供应商”的多对多关系,但“供应商”表在应用程序A/C/D中不存在,以此类推。将“Clients”或“Suppliers”表移动到共享数据库实际上也不是一个选项,因为其他实体(未共享)也与这些表有关系 我基本上需要找到一种方法来映射“共享用户”模型/数据库上的多对多关系,这些关系对于每个应用程序都是唯一的。有没有一种方法可以通过多个数据库实现这一点?我应该采取其他方法吗 欢迎提供所有信息。提前感谢。选项1 使用不同的连接,这似乎不可能与开箱即用的原则 类似的问题已经得到了回答:Php Symfony2-在多个应用程序之间共享用户,php,database,symfony,database-design,fosuserbundle,Php,Database,Symfony,Database Design,Fosuserbundle,我目前正在为我们的一位客户寻找一种在多个Symfony2应用程序之间共享用户的方法。在过去3年中,我们为他们制作了一些应用程序(4),它们有不同的用途,但总是使用“相同”的用户模型和数据 目前,我们有4个独立的数据库,其中“users”表在所有应用程序上都是相同的,除了多对多关系。起初,我考虑添加第二个实体管理器(和连接),并将用户放在单独的数据库中。所有的应用程序都可以使用它,所有的用户都有相同的凭证。但是我如何处理多对多关系呢 举个例子,在应用程序A上,您有一个从“用户”到“客户”的多对多关
<?php
namespace Demo\UserBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* @ORMTable(name="users.User")
*/
class User
{
/* ... */
}
作者还链接到github上的一个示例项目:
我认为第一件事是,不强制使用Doctrine的关系映射,该映射仅针对数据库关系设计。也可以在实体内手动填充数组。大多数情况下,您需要将UserManager(或UserHelper)类添加到服务容器中。然后您可以执行类似于$user=userHelper->loadByUsername($username)的操作;或userHelper->update($user);竖起大拇指看最后一个链接;刚在本地试用过,效果非常好。所有的应用程序目前都在同一台服务器上,所以现在肯定可以正常工作。我唯一担心的是我们能在同一台服务器上保留它们多长时间,因为有一天可能会有一些应用程序“全球化”,每个平台都有大量用户,但这是另一个问题:-)谢谢你的帮助!
<?php
namespace Demo\PostBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* @ORMTable(name="posts.Post")
*/
class Post
{
/* ... */
}
class Post
{
/**
* @ORM\ManyToOne(targetEntity="\Demo\UserBundle\Entity\User")
**/
private $user;
/* ... */
}