首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Symfony2和Doctrine2的动态数据库选择

基于Symfony2和Doctrine2的动态数据库选择
EN

Stack Overflow用户
提问于 2013-10-31 10:10:47
回答 1查看 1.1K关注 0票数 3

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

为了根据子域确定数据库,我检查了Symfony 2:多个动态数据库连接http://knpuniversity.com/screencast/question-answer-day/symfony2-dynamic-subdomains。我试过提问者的解决方案和答案的解决方案。给定的解决方案有效,但只适用于某一部分。我创建了一个服务,以便能够在Controller中的数据库之间切换,但是当我创建一个新实体时,Symfony总是希望在主数据库上执行create。

我想让Doctrine把表划分到数据库上。我也尝试过注释,但我无法让它起作用。是否有人对如何将实体分离并放入不同的数据库有建议?理想情况下,我应该能够定义每个实体要使用的数据库。

附加信息:

Symfony 2.3

学说2

EN

回答 1

Stack Overflow用户

发布于 2013-11-01 09:16:05

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

代码语言:javascript
复制
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

下一次节省:

代码语言:javascript
复制
$em = $this->get('doctrine')->getManager('dynamic');
$em->persist(new \My\MyBundle\DynamicEntity\Item());
$em->flush();

您必须回顾关于eneity管理器映射配置(更多见symfony 2文档)的内容。没有这一点,您将能够将每个实体放入两个数据库中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19703599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档