Я понимаю, почему я должен поддерживать соединения с базой данных в файле 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
Но я хотел бы избежать необходимости добавлять три параметра базы данных, как показано ниже для каждого сервера, этапа и 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 и любых других баз данных, которые мне нужно настроить.
Если ваши соединения одинаковы в каждой среде, но только значения конфигурации различны, вы должны использовать параметры-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
файл на вашем ПК со всеми определенными соединениями.
Многочисленные связи и работа с ними: