0

長い間グーグルで探していましたが、バンドル用の2番目のDB接続を作成する方法という理想的なソリューションを探しています。私のシステムは多くのバンドルで構成されていますが、そのうちの 1 つは元の DB だけでなく、別の DB にも接続する必要があります (一度に 2 つの接続が必要です)。

バンドルの boot() メソッドでこの方法を試しました:

$connectionFactory = $this->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(array(
    'driver' => 'pdo_mysql',
    'user' => 'my_user',
    'password' => 'my_pass',
    'host' => '',
    'dbname' => 'my_dbname',
));
$this->container->set('doctrine.dbal.new_connection', $connection);
$em = $this->get('doctrine')->getEntityManager('new');

しかし、エラーがスローされました: "new" という名前の Doctrine EntityManager は存在しません。

そして、config.yml に 2 番目の接続を追加しようとすると、次のように呼び出します。

$this->get('doctrine')->getEntityManager('second_connection')

同じエラーがスローされます。

EDIT: エラーが解消されました。これは、doctrine.dbal.connections の「mappings」パラメータの不適切な設定が原因でした。

ここで、バンドルによって処理されるデータベースへの接続を作成したいと考えています。app/config/config.yml または他の構成は、この接続について認識していません。簡単に言えば、新しいバンドルのユーザー オープン ページが独自の接続とエンティティ マネージャーを処理すると、新しい接続が自動的に作成され、2 つ以上のデータベースにアクセスできるようになります。1 つ目は app/config/config.yml からのオリジナルで、2 つ目はバンドル接続です。

doctrin.dbal の app/config/config.yml と doctrine.orm のエンティティ マネージャー内で 2 つのデータベース接続を事前定義してみました。それはうまくいきますが、上で書いたように私にとっては不便です。

別の賢明な解決策があります。それを解決するにはどうすればよいですか?

4

1 に答える 1

0

http://symfony.com/doc/2.0/cookbook/doctrine/multiple_entity_managers.htmlのように app/config/parameters.ini ファイルで設定します。

于 2013-01-31T17:16:51.713 に答える