3

我遇到了以下问题:我有一个核心数据库,其中包含将我的登录信息保存到其他数据库的 Doctrine 实体。每个注册到我的应用程序的客户都将获得自己的数据库。我使用子域来确定必须使用哪个数据库。客户端数据库包含其他 Doctrine 实体,以保存客户端的数据。

为了根据子域确定数据库,我检查了 Symfony 2 : multiple and dynamic database connectionhttp://knpuniversity.com/screencast/question-answer-day/symfony2-dynamic-subdomains。我已经尝试过提问者的解决方案和答案的解决方案。给定的解决方案有效,但仅适用于一部分。我创建了一个能够在 Controller 中的数据库之间切换的服务,但是当我创建一个新实体时,Symfony 总是希望在主数据库上执行 CREATE TABLE。

我希望 Doctrine 将表划分为数据库。我也尝试过注释,但我无法让它工作。有没有人对如何分离实体并将它们放在不同的数据库中提出建议?理想情况下,我应该能够定义每个实体要使用的数据库。

附加信息:

Symfony 2.3

教义 2

4

1 回答 1

1

如果您有动态数据库,可能连接到第二个实体管理器(例如动态):

doctrine:
  dbal:
    connections:
      default:
        # default configuration
      dynamic:
        # placeholder used to replace connection information
  orm:
    entity_managers:
      default:
        connection: default
      dynamic:
        connection: dynamic
        mappings:
          MyBundle:
            type: annotation
            dir: DynamicEntity # for ext \My\MyBundle\DynamicEntity\Item class

下次保存:

$em = $this->get('doctrine')->getManager('dynamic');
$em->persist(new \My\MyBundle\DynamicEntity\Item());
$em->flush();

你必须记住 eneity manager 映射配置(更多在 symfony 2 文档中)。如果没有这个,您将能够将每个实体放入两个数据库中。

于 2013-11-01T09:16:05.500 回答