0

複数のデータベースを設定できるかどうか疑問に思っていましたSymfony2(Doctrine2 で使用しています)。別のアプリケーションを見たいときに、エラーが発生し、そのようなテーブルが存在しないと表示されるためです。

私の質問は、さまざまなアプリケーションを表示するたびに、データベースを変更する必要があるか (parameters.iniファイルで行う)、それとも別の方法があるかということです。

4

2 に答える 2

4

基本的に、データベースごとに (少なくとも) 1 つの EntityManager と、データベースごとに (少なくとも) 1 つの接続を定義する必要があります。これは、次の構成によって実現されますapp/config/config.yml

# Doctrine Configuration
doctrine:
    dbal:
        default_connection: conn1
        connections:
            conn1:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
            conn2:
                driver:   %database2_driver%
                host:     %database2_host%
                port:     %database2_port%
                dbname:   %database2_name%
                user:     %database2_user%
                password: %database2_password%
                charset:  UTF8

    orm:
        auto_generate_proxy_classes: %kernel.debug%

        default_entity_manager:   em1
        entity_managers:
            em1:
                connection:       conn1
                mappings:
                    XxxBundle1: ~
            em2:
                connection:       conn2
                mappings:
                    XxxBundle2: ~

特定の EntityManager のマップされたエンティティがどのバンドルに含まれているかを知る必要があるため、データベースごとに (少なくとも) 1 つのバンドルを作成する必要があります。ここに書いたようauto_mappingに orm 部分のパラメータを消すのを忘れずに!

このテーマに関する公式ドキュメント

于 2012-08-14T13:22:07.790 に答える
2

これは、 http://www.theodo.fr/blog/2011/09/symfony2-working-with-multiple-databases/を達成するための有用なアドバイスになります。

于 2012-08-14T12:03:14.783 に答える