Bulat
OpenSkyにいる間にDoctrine拡張機能を実装し、MongoDBドキュメントとMySQLレコード間の参照を処理しました。MySQLレコードは現在(明らかに古くなっています)フォーク
DoctrineExtensions
の 事業。 orm2odm_references
のいずれかを確認する必要があります またはopenskyfork
ブランチ。これをプロジェクトで使用できるようにするには、DoctrineExtensionsの新しいフォークに移植するか、単にコードをアプリケーションに組み込むことをお勧めします。残念ながら、コード自体以外にドキュメントはありません。
ありがたいことに、料理本の記事 これを最初から実装する方法を説明しているDoctrineのWebサイトにあります。基本的に、イベントリスナーを使用して、プロパティを他のオブジェクトマネージャーからの参照(つまり、初期化されていないProxyオブジェクト)に置き換えます。残りは、プロキシオブジェクトが遅延ロードする自然な動作で処理されます。イベントリスナーがサービスであれば、ORMとODMの両方のオブジェクトマネージャーを簡単に挿入できます。
このモデルによって保証される唯一の整合性は、不正な参照をハイドレイトしようとしたときに例外を受け取ることです。これは、他のデータベースのIDを保存し、手動でクエリを実行するだけの場合よりもおそらく多くなります。