7

データベース接続をファイルに保持する必要がある理由は理解していparameters.ymlますが、追加のデータベース接続と、開発、ステージ、および本番環境用のさまざまなホストもセットアップしたいと考えていました。と組み合わせてこれを行うことができると思っていましたがconfig_dev.yml、間違っていますか?config_test.ymlconfig_prod.ymlconfig.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 のデータベース サーバーに切り替えることができなくなりました。

これが対処されている追加のドキュメントが欠けているに違いありません。

Doctrine を使用した複数データベース接続のドキュメントを見てきました

ただし、次のような 3 つのデータベース オプションを各開発、ステージ、および本番サーバーに追加する必要は避けたいと思います。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 のように見えます。これは単なるデータベース用です。foo および構成する必要があるその他のデータベースに対してこれを行う必要があります。

4

2 に答える 2

2

各環境で接続が同じで、構成値のみが異なる場合は、parameters-configuration-file を使用する必要があります。必要な環境変数を 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 が見つからない場合は、次回composer updateを呼び出すときに、データベースのホスト名を尋ねられます。

すべての設定を別々のファイルに保存したい場合は、これを config_XXX.yml ファイルの先頭に追加する必要があります。

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

XXX を実際の環境に置き換えます。環境ごとに parameters_XXX.yml を作成し、デフォルトの parameters.yml ファイルにあるように、そこにホストの構成パラメーターを設定します。

# parameters_XXX.yml
parameters:
    database_host_1: blahInXXXEnv
    database_host_2: blubInXXXEnv
    ...
于 2016-03-16T18:38:30.013 に答える
0

異なるprodおよびdevパラメーター構成ファイルを使用する理由がわかりません。あなたは特定のものを使うことができますparameters.yml.dist

定義されたすべての接続を使用してPCにファイルします。

複数の接続とそれらとの連携:

于 2012-11-30T14:58:37.507 に答える