我遇到以下问题: 我有一个包含Doctrine Entities的核心数据库,它将我的登录信息保存到其他数据库。注册到我的应用程序的每个客户端都将获得自己的数据库。我使用子域来阻止必须使用哪个数据库。客户端数据库包含其他Doctrine实体,以保留客户端的数据。
为了确定基于子域的数据库,我查了一下 Symfony 2 : multiple and dynamic database connection和http://knpuniversity.com/screencast/question-answer-day/symfony2-dynamic-subdomains。我尝试了提问者的解决方案和答案的解决方案。 给定的解决方案有效,但仅限于一部分。我创建了一个能够在Controller中的数据库之间切换的服务,但是当我创建一个新的Entity时,Symfony总是希望在主数据库上执行CREATE TABLE。
我希望Doctrine将表格划分到数据库中。我也试过Annotations,但我无法让它工作。有没有人建议如何分离实体并将它们放在不同的数据库中?理想情况下,我应该能够定义每个实体使用的数据库。
其他信息:
Symfony 2.3
主义2
答案 0 :(得分: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();
您必须记住有关能源管理器映射配置(more in symfony 2 documentation)的信息。如果没有这个,您将能够将每个实体放入两个数据库中。