8

私の目標は、One Project Bundle で複数のデータベースにアクセスすることです。

私はsymfony2のドキュメントを読み、次のことを行うことができました:

  1. 異なるバンドルに対して複数の接続を構成する
  2. 以下を使用して、1 つの既存のデータベースからエンティティを生成します。

    php app/console doctrine:mapping:import AcmeBlogBundle annotation
    php app/console doctrine:generate:entities AcmeBlogBundle
    

しかし、1 つのバンドルで複数のデータベースにアクセスできるように、同じバンドルで複数の既存のデータベースからエンティティを生成する方法が見つかりません。何か案は?

PS私はDoctrineに精通していません。実際、Doctrine なしで Symfony2 を実行する方法があれば、私も感謝します。

更新#1:

Ceradの答えはかなり近いです。しかし、まだ解決されていない問題が 1 つあります。異なるデータベースに同じテーブル名がいくつかあるため、それらをエンティティ フォルダー内の別のフォルダーに整理することをお勧めします。thisthatのような同様の投稿を確認しました。しかし、解決策は私にとってはうまくいきません。彼らのソリューションは、config.yml で指定された dir オプションを無視して、すべてのエンティティをエンティティ フォルダーに直接配置するだけです。この問題の回避策はありますか?

4

1 に答える 1

6

最初のステップは、データベースごとに 1 つずつ、複数のエンティティ マネージャー (接続ではない) を構成することです。次に、Doctrine コマンドで --em オプションを使用して、使用するエンティティーマネージャーを指定します。

php app/console doctrine:mapping:import "AcmeBlogBundle" annotation --em=name1
php app/console doctrine:mapping:import "AcmeBlogBundle" annotation --em=name2

doctrine を使用して複数のデータベースを直接クエリ (結合) することはできないことに注意してください。少なくともそう簡単ではありません。一度に 1 つのデータベースにクエリを制限することを計画している限り、問題ありません。

これは実際にはやや高度なトピックです。ドクトリンのドキュメントに時間を費やすことをお勧めします。1 つのデータベースから始めて、後で分割する方が簡単な場合もあります。

于 2013-03-27T14:08:14.990 に答える