Confusión con parameters.yml y config_ (dev | stage | prod) .yml para conexiones a bases de datos

Entiendo por qué debo mantener mis conexiones a la base de datos en el archivo parameters.yml , pero también quería configurar conexiones de bases de datos adicionales, así como también diferentes hosts para entornos de desarrollo, escenario y prod. Pensé que podría hacer esto con config_dev.yml , config_test.yml y config_prod.yml junto con config.yml , ¿estoy equivocado?

En parameters.yml tengo la conexión principal de la base de datos, pero ¿puedo mover esto a las configuraciones en su lugar?

Ejemplo: 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 

Ejemplo: config_dev.yml

 # Doctrine Configuration - Here I define the dev hosts doctrine: dbal: connections: blah: host: blah_dev foo: host: foo_dev 

Ejemplo: config_test.yml

 # Doctrine Configuration - Here I define the stage or QA hosts doctrine: dbal: connections: blah: host: blah_stage foo: host: foo_stage 

Ejemplo: config_prod.yml

 # Doctrine Configuration - Here I define the prod hosts doctrine: dbal: connections: blah: host: blah_prod foo: host: foo_prod 

Ahora también he eliminado la configuración en parameters.yml pero a Symfony / Doctrine no le gusta esto. ¿Me estoy perdiendo de algo? ¿Cómo puedo configurar algo como lo que tengo?

Ahora si defino la conexión de base de datos predeterminada en parameters.yml me puedo conectar a él y luego

 parameters: database_driver: pdo_pgsql database_host: blah_prod database_port: 5432 database_name: blah database_user: blah_user database_password: blah_pass 

y en config.yml

 doctrine: dbal: driver: "%database_driver%" host: "%database_host%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" 

Pero ahora pierdo las múltiples bases de datos que necesito y la capacidad de pasar de un desarrollo a otro a servidores de bases de datos.

Me falta algo de documentación adicional donde se está abordando, cualquier ayuda sería genial.

He visto la documentación para las conexiones de múltiples bases de datos con Doctrine

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

Pero me gustaría evitar tener que agregar tres opciones de base de datos como las siguientes para cada dev, stage y servidor (es) de prod en 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 

(¿Tal vez simplemente configure los diferentes hosts?)

Esto parece feo y un PITA, y esto es solo para la base de datos bla, tendría que hacer esto para foo y cualquier otra base de datos que necesite configurar.

Si sus conexiones son las mismas en cada entorno pero solo los valores de configuración son diferentes, debe usar los parámetros-archivo-configuración. Defina las variables de entorno, que necesita, en el archivo parameters.yml.dist como este:

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

Tu config.ml puede verse así:

 # 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 

Si su parameters.yml falta, se le preguntará por los nombres de host de la base de datos la próxima vez que llame a la actualización del compositor, por ejemplo.

Si desea guardar todas sus configuraciones en archivos separados, debe agregar esto al comienzo de sus archivos config_XXX.yml:

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

Reemplace XXX con su entorno. Cree un parameters_XXX.yml para cada entorno y configure los parámetros de configuración para sus hosts allí como en el archivo parameters.yml predeterminado.

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

No veo que haya una razón para usar diferentes archivos de configuración de parámetros prod y dev. Puede usar parameters.yml.dist específicos

archiva en tu PC con todas las conexiones definidas.

Múltiples conexiones y trabajar con ellas: