Symfony2-在多个应用程序之间共享用户

温蒂尼奥

我目前正在寻找一种为我们的客户之一在多个Symfony2应用程序之间共享用户的方法。在过去的3年中,我们为它们制作了一些具有不同用途的应用程序(4),但始终使用“相同”的用户模型和数据。

当前,我们有4个独立的数据库,其中“用户”表在所有应用程序上都差不多,除了多对多关系。最初,我在考虑添加第二个实体管理器(和连接),并将用户放在单独的数据库中。所有应用程序都将能够使用它,并且所有用户都将具有相同的凭据。但是,我该如何处理多对多关系?

举个例子,在应用程序A上,从“用户”到“客户”有多对多关系,但是在应用程序B / C / D中不存在“客户”表。在应用程序B上,您具有从“用户”到“供应商”的多对多关系,但是在应用程序A / C / D中不存在“供应商”表,依此类推。将“客户”或“供应商”表移至共享数据库也不是真正的选择,因为其他(未共享的)实体也与这些表有关系。

我基本上需要找到一种方法来映射“共享用户”模型/数据库上的多对多关系,这对于每个应用程序都是唯一的。有没有办法用多个数据库来实现呢?我应该采取其他方法吗?

欢迎所有信息。提前致谢。

vctls

选项1

使用不同的连接,开箱即用的Doctrine似乎无法实现。

已经回答了类似的问题:

如第一个答案所述,您可以执行以下操作:

通过保存相关对象(旧样式)的标识符而不是对它们的引用来保持对象图的断开连接,然后通过服务手动获取对象。

但是,如果您希望Doctrine实际上了解这些关联,则需要将关联的实体持久保存在同一数据库中,否则您的映射将仅生成错误。这意味着您需要复制User实体。

选项2

在非常特定的情况下,您可以使用相同的连接(即,在同一主机上使用同一用户的同一DBMS的多个数据库),似乎有一种方法,但我尚未对其进行测试:https ://techpunch.co.uk/development/using-multiple-databases-with-symfony2-and-doctrine2

这个想法是在每个表的前面加上数据库名称,就像它是一个架构名称一样,如下所示:

该实体映射到数据库“用户”中的“用户”表:

<?php
namespace Demo\UserBundle\Entity;
use DoctrineORMMapping as ORM;

/**
 * @ORMTable(name="users.User")
 */
class User
{
  /* ... */
}

这一个映射到数据库“ posts”中的“ Post”表:

<?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;
    /* ... */
}

作者还链接到github上的示例项目:https : //github.com/lobsterdore/symfony2-multiple-db-example

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有多个symfony2应用程序的nginx

来自分类Dev

Quickblox在各个应用程序之间共享用户

来自分类Dev

如何部署Symfony应用程序?Symfony2

来自分类Dev

在 Symfony 应用程序之间共享会话

来自分类Dev

在哪里部署symfony2应用程序

来自分类Dev

在Symfony2应用程序中对用户进行身份验证

来自分类Dev

Symfony2骨架应用程序,具有来自SQL的身份验证和用户

来自分类Dev

Symfony2应用程序管理员和用户区

来自分类Dev

如何通过json从ionic应用程序向symfony2注册用户

来自分类Dev

Apache 2.4.7虚拟主机上的多个php / symfony2应用程序

来自分类Dev

Apache 2.4.7虚拟主机上的多个php / symfony2应用程序

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

如何强制用户注销symfony2

来自分类Dev

Symfony2和Angular。用户认证

来自分类Dev

Symfony2用户密码更改

来自分类Dev

symfony2 ajax用户搜索

来自分类Dev

symfony2以编程方式验证用户

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

如何强制用户注销symfony2

来自分类Dev

Symfony2限制访问用户

来自分类Dev

symfony2 ajax用户搜索

来自分类Dev

Symfony2用户密码更改

来自分类Dev

EntityRepository Symfony2中的多个条件

来自分类Dev

Symfony2上传多个文件

来自分类Dev

EntityRepository Symfony2中的多个条件

来自分类Dev

从零开始的Symfony2应用

来自分类Dev

在cPanel上部署Symfony2应用

来自分类Dev

Symfony2和Angular.JS之间共享的翻译

来自分类Dev

Symfony2和Angular.JS之间共享的翻译