複数のデータベースを設定できるかどうか疑問に思っていましたSymfony2
(Doctrine2 で使用しています)。別のアプリケーションを見たいときに、エラーが発生し、そのようなテーブルが存在しないと表示されるためです。
私の質問は、さまざまなアプリケーションを表示するたびに、データベースを変更する必要があるか (parameters.ini
ファイルで行う)、それとも別の方法があるかということです。
複数のデータベースを設定できるかどうか疑問に思っていましたSymfony2
(Doctrine2 で使用しています)。別のアプリケーションを見たいときに、エラーが発生し、そのようなテーブルが存在しないと表示されるためです。
私の質問は、さまざまなアプリケーションを表示するたびに、データベースを変更する必要があるか (parameters.ini
ファイルで行う)、それとも別の方法があるかということです。
基本的に、データベースごとに (少なくとも) 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 部分のパラメータを消すのを忘れずに!
これは、 http://www.theodo.fr/blog/2011/09/symfony2-working-with-multiple-databases/を達成するための有用なアドバイスになります。