一段时间以来,我一直在将Symfony与Doctrine结合使用,直到现在为止,都可以通过config.yml将Doctrine配置为连接到同一服务器(IP)上的多个数据库。
但是现在我有另一种情况了。
我正在处理一个案例,该案例具有在不同IP地址上运行的多个项目。我可以连接在还托管主应用程序的计算机上本地运行的数据库,但是现在我需要连接到另一台服务器上托管的另一个数据库。因此,要设计这种情况:
我已经在我的parameter.yml中为每个数据库定义了用户名和密码,所以这没什么大不了的。我只想知道当应用程序在服务器Alpha上时,是否可以连接到服务器Beta上的(本地托管)数据库。
谢谢!
答案 0 :(得分:1)
您应该配置多个实体管理器和连接
在文件config.yml上:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '193.15.15.15'
port: '%port_parameter_for_foo%'
dbname: 'Foo'
user: '%user_parameter_for_foo%'
password: '%pass_parameter_for_foo%'
charset: UTF8
customer:
driver: pdo_mysql
host: '193.15.15.16'
port: '%port_parameter_for_bar%'
dbname: 'Bar'
user: '%user_parameter_for_bar%'
password: '%pass_parameter_for_bar%'
charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
BundleOnAlpha: ~
customer:
connection: beta
mappings:
BundleOnBeta: ~
文档更加完整: https://symfony.com/doc/3.4/doctrine/multiple_entity_managers.html