我理解为什么我应该将我的数据库连接保留在parameters.yml
文件中,但我还想为开发、阶段和生产环境设置额外的数据库连接以及不同的主机。我以为我可以用 来做到这一点config_dev.yml
,config_test.yml
并config_prod.yml
结合config.yml
,我错了吗?
在parameters.yml
我持有主数据库连接但我可以将它移动到配置中吗?
例子:config.yml
# Doctrine Configuration - notice there is no host defined here
doctrine:
dbal:
default_connection: blah
connections:
blah:
driver: pdo_pgsql
port: 5432
dbname: blah
user: blah_user
password: blah_pass
charset: UTF8
foo:
driver: pdo_pgsql
port: 5432
dbname: foo
user: foo_user
password: foo_pass
charset: UTF8
例子:config_dev.yml
# Doctrine Configuration - Here I define the dev hosts
doctrine:
dbal:
connections:
blah:
host: blah_dev
foo:
host: foo_dev
例子:config_test.yml
# Doctrine Configuration - Here I define the stage or QA hosts
doctrine:
dbal:
connections:
blah:
host: blah_stage
foo:
host: foo_stage
例子:config_prod.yml
# Doctrine Configuration - Here I define the prod hosts
doctrine:
dbal:
connections:
blah:
host: blah_prod
foo:
host: foo_prod
现在我也删除了其中的设置,parameters.yml
但 Symfony / Doctrine 不喜欢这样。我错过了什么吗?我怎样才能设置像我一样的东西?
现在,如果我在中定义默认数据库连接,parameters.yml
我可以连接到它,然后
parameters:
database_driver: pdo_pgsql
database_host: blah_prod
database_port: 5432
database_name: blah
database_user: blah_user
database_password: blah_pass
并在 config.yml
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
但是现在我失去了我需要的多个数据库以及从 dev 到 stage 到 prod 数据库服务器的切换能力。
我必须缺少一些正在解决此问题的其他文档,任何帮助都会很棒。
我已经看到了 Multiple Database connections with Doctrine 的文档
但我想避免为每个开发、阶段和产品服务器添加三个数据库选项,如下所示parameters.yml
parameters:
database_driver: pdo_pgsql
database_host: blah_dev
database_port: 5432
database_name: blah
database_user: blah_user
database_password: blah_pass
#database_driver2: pdo_pgsql
database_host2: blah_stage
#database_port2: 5432
#database_name2: blah
#database_user2: blah_user
#database_password2: blah_pass
#database_driver3: pdo_pgsql
database_host3: blah_prod
#database_port3: 5432
#database_name3: blah
#database_user3: blah_user
#database_password3: blah_pass
(也许只是配置不同的主机?)
这看起来很难看,而且是 PITA,这仅适用于 blah 数据库,我必须为 foo 和我需要配置的任何其他数据库执行此操作。