Путаница с параметрами.yml и config_ (dev | stage | prod) .yml для соединений с базой данных

Я понимаю, почему я должен поддерживать соединения с базой данных в файле parameters.yml но я также хотел настроить дополнительные подключения к базам данных, а также разные хосты для сред dev, stage и prod. Я думал, что могу сделать это с помощью config_dev.yml , config_test.yml и config_prod.yml в сочетании с config.yml , я ошибаюсь?

В parameters.yml я держу основное соединение с базой данных, но могу ли я перенести это в config (s)?

Пример: 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%" 

Но теперь я теряю несколько баз данных, в которых я нуждаюсь, и возможность переключения с сервера на сервер на базы данных prod.

Мне нужно пропустить дополнительную документацию, в которой это исправляется, любая помощь будет отличной.

Я видел документацию для нескольких соединений с базой данных с Doctrine

  • http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

Но я хотел бы избежать необходимости добавлять три параметра базы данных, как показано ниже для каждого сервера, этапа и prod-сервера (ы) в 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 и любых других баз данных, которые мне нужно настроить.

Solutions Collecting From Web of "Путаница с параметрами.yml и config_ (dev | stage | prod) .yml для соединений с базой данных"

Если ваши соединения одинаковы в каждой среде, но только значения конфигурации различны, вы должны использовать параметры-config-файл. Определите переменные среды, которые вам нужны, в файле parameters.yml.dist следующим образом:

 # parameters.yml.dist parameters: database_host_1: blah database_host_2: blub ... 

Ваш config.ml может выглядеть так:

 # config.yml imports: - { resource: parameters.yml } ... doctrine: dbal: default_connection: blah connections: blah: driver: pdo_pgsql port: 5432 host: "%database_host_1%" dbname: blah user: blah_user password: blah_pass charset: UTF8 foo: driver: pdo_pgsql port: 5432 host: "%database_host_2%" dbname: foo user: foo_user password: foo_pass charset: UTF8 

Если ваш parameters.yml отсутствует, вы будете запрашивать имена хостов базы данных при следующем вызове, например, при обновлении композитора .

Если вы хотите сохранить все свои конфигурации в отдельных файлах, вы должны добавить это в начале своих файлов config_XXX.yml:

 # config_XXX.yml imports: - { resource: config.yml } - { resource: parameters_XXX.yml } 

Замените XXX своей средой. Создайте параметр_XXX.yml для каждой среды и задайте параметры конфигурации для своих хостов, как это указано в файле parameters.yml по умолчанию.

 # parameters_XXX.yml parameters: database_host_1: blahInXXXEnv database_host_2: blubInXXXEnv ... 

Я не вижу причин использовать разные конфигурационные файлы prod и dev. Вы можете использовать определенные parameters.yml.dist

файл на вашем ПК со всеми определенными соединениями.

Многочисленные связи и работа с ними: