27

別々のデータベースに存在する 2 つのエンティティ間に関係を作成できるかどうか疑問に思っています。

たとえば、http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.htmlにあるソリューションを使用して、顧客データベースのユーザーとの 1 対多の関係をデフォルト データベースの投稿に作成したとします。

これは Symfony2 と Doctrine でサポートされているものですか?

4

1 に答える 1

50

異なるオブジェクト マネージャー (エンティティ マネージャー) を使用すると、オブジェクト グラフを交差させることができません。そのケースは複雑すぎて、Doctrine ORM によって管理されていません。

そのような場合が必要な場合は、関連するオブジェクトへの参照ではなく、関連するオブジェクトの識別子を保存することによって (古いスタイルで) オブジェクト グラフを切断したままにしてから、サービスを介して手動でオブジェクトを取得します。Doctrine2 ORM と Doctrine2 MongoDB ODM 間の接続の例で、これがどのように機能するかのかなり良い例を見つけることができます。@PostLoadまたは、例でリンクしたリポジトリを介してリンクを作成することにより、エンティティにデータを入力するイベント リスナーを使用することもできます。(代わりに、関連するオブジェクトの識別子を抽出する必要があります) についても同じです@PostPersistが、この手法は非常に面倒になる可能性があることに注意してください。

また、RDBMS が 1 つのホストでデータベース間の操作をサポートしている場合は、1 つの EntityManager を使用して、@ORM\Table(name="schemaname.tablename").

于 2012-07-15T18:35:05.473 に答える