1

サードパーティの開発者がモデル自体を変更せずにモデルにフィールドを動的に追加できる、アプリケーション用の拡張可能なモデルを構築したいと思います。これは、エンティティYでフィールドXが指定されていない「Xhas a Y」によって実現できると思います。したがって、サードパーティの開発者は、エンティティをフォルダにドロップするだけで、Yに検出させることができます。より具体的な例を挙げましょう。

User
- Id
- Name

ユーザーが多数の投稿を持っているコレクション投稿を追加したいとします。ユーザーモデルに投稿フィールドを追加せずにそれを行うにはどうすればよいですか。私は単方向のOneToManyなどについて読んでいますが、それが私のモデルを簡単に拡張できるかどうかわかりませんか?どうやってこれを達成しようとしますか?

4

1 に答える 1

2

ターゲットエンティティの解決リスナーを使用すると、実行時に関連付けを再定義できます。基本的に、次のようなマップを作成できます。

@ORM\ManyToOne(targetEntity="My\Namespace\UserInterface")

ご覧のとおり、インターフェイスをターゲットエンティティとしてマッピングすることはあまり意味がありません。My\Namespace\UserInterfaceすべてを参照に置き換える必要があることを伝えると、非常に便利になりますOther\Namespace\User

これにより、他の開発者は、関連付けられたオブジェクトの実装を置き換え、そのインターフェイスのみを実装し、必要な場合にのみマッピングをオーバーライドするように構成キーをどこかに設定できます。

インターフェイスがなくても機能しますが、コントラクトで定義された明確なAPIを使用することを強くお勧めします。

于 2013-02-09T16:47:44.400 に答える