2012-11-30 11 views
7

私はデータベース接続をparameters.ymlファイルに保存する理由を理解していますが、追加のデータベース接続だけでなく、 dev、stage、prod環境をサポートします。 config_dev.ymlconfig_test.ymlconfig_prod.ymlconfig.ymlと一緒にこれを行うことができると私は考えましたか?データベース接続用のparameters.ymlとconfig_(dev | stage | prod).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%" 

にしかし、今、私は私が必要とする複数のデータベースを失うことができ、開発者からステージに切り替えてデータベースサーバーをプロデュースする機能

これが解決されている場合は、いくつかの追加のドキュメントが不足している可能性があります。

私は教義

で複数のデータベース接続のためのドキュメントを見てきました。しかし、私は、各devに関する以下のような3つのデータベース・オプションを追加することを避けるために希望、ステージと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に見えますが、これはちょっとしたデータベースのためのものです。私はこれをfooと設定する必要がある他のデータベースに対して行う必要があります。

答えて

0

異なるprodとdevパラメータ設定ファイルを使用する理由はありません。 あなたが定義されたすべての接続をお使いのPCでhttp://symfony.com/doc/master/cookbook/workflow/new_project_git.html

  • +2

    ありがとうございます、私はあなたが示唆したドキュメントを見ましたが、それでも私の状況には役立ちません。なぜ私はこの設定をしたいのかという理由からです。 1)私は複数のデータベースサーバを持っている、2)私は複数の環境(dev、stage、prod、QA)を持っており、3)これらの変更を行う能力。その他の提案はありますか? {:parameters.ymlリソース} とconfig_dev.ymlとconfig_prod.ymlに 輸入を追加: - - {リソース:parameters_dev.yml}または - {リソースを : –

    +5

    はたぶん、あなただけのconfig.ymlで 輸入を取り外す必要があります:parameters_prod.yml} – nvvetal

    2

    あなたの接続は、それぞれの環境で同じですが、唯一の設定値が異なっている、あなたはパラメータを使用する必要がある場合-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が欠落している場合は、次回に作曲家アップデートと呼ぶデータベースホスト名を尋ねるでしょう。

    あなたが別々のファイルにすべての設定を保存したい場合、あなたは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 
        ... 
    
    関連する問題