2

私はdoctrine2にかなり慣れていません。次のように接続する必要があります。

タグには (抽象) リソースが接続されています。(要約) リソースにはタグがあります。

コードに基づいて Entity リソースのオブジェクトを動的に型付けしたい。このようにして、特定のインターフェイスを実装するエンティティにタグを付けることができます。

Doctrine で Zend Framework と注釈 docblock スタイルを使用しています。

別の例は、システム内のテキストメッセージを表す「メッセージ」エンティティです。作成者と受信者の関連付けがありますが、作成者と受信者に応じて異なるターゲットが必要です。たとえば、管理エンティティがユーザー エンティティにメッセージを送信したり、ユーザー エンティティが VipUser エンティティにメッセージを送信したりします。

4

2 に答える 2

2

クラステーブルの継承は、これに対する完璧なソリューションのようです。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#class-table-inheritance

基本的に、親クラス (タグ) を作成し、その子のそれぞれに識別子マップを提供する必要があります。だから例えば..

/** 
 * @Entity 
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"tag" = "Tag", "message" = "Message", "otherentity" = "OtherEntity"})
 */
class Tag
{
   // tag properties / definitions etc
}

/** @Entity */
class Message extends Tag
{
   // Message specific stuff
}

必要な他のエンティティで「タグ」エンティティを拡張できます。識別子マップの値を更新することを忘れないでください。

于 2012-05-11T08:55:05.257 に答える
1

この doctrine2 拡張機能をチェックしてください:

https://github.com/FabienPennequin/DoctrineExtensions-Taggable

私はこれがあなたが望むことをすると信じています。

于 2012-05-11T15:33:42.777 に答える