2016-08-18 20 views
0

Symfony2アプリのエンティティの一部の通知を保存するためにPendingMessageクラスを実装する必要があります。 1つのエンティティに対して、場合によっては別のエンティティに対して通知が作成されることがあります(多くのエンティティがあります)。symfonyの一般的なエンティティの関係doctrine

この「PendingMessage」クラスで、「$ destination」という属性を持つためには、特定のエンティティタイプではなく特定のエンティティタイプ(クラス)のみを格納するORMリレーションシップを行う方法はありますかエンティティタイプ

インターフェイスを実装する必要がありますか?どんな助けも歓迎です!

答えて

1

PendingMessageエンティティに2つのパラメータを追加できます.1つはentityName、もう1つはentityIDです。これらのパラメータを持つ

、あなたはすべてのエンティティの可能なため、このPendingMessageと同じ操作をしたい場合は、私が使用されるインタフェースを記述します

$em = $this->getDoctrine()->getManager(); 
$pendingMessage = $this->getRepository('youBundle:PendingMessage')->find(1234); 
$targetEntity = $this->getRepository('yourBundle:'.$pendingMessage->getEntityName())->find($pendingMessage->getEntityID()); 

のようなコントローラでリポジトリにアクセスすることができました使用するすべてのリポジトリによって、この関数が動的に受け取られるすべてのリポジトリに与えられることが保証されています。

これがあなたの探しているものでない場合は、質問を明確にしてください。

+0

をはい、私はこれは私が探していると思う...しかし、私はどのように知りませんこれを実装してください...これらの2つのパラメータを持つインタフェース? – jmunozco

1

このメッセージが作成されたシリアル化エンティティを格納するPendingMessageエンティティにフィールドを追加できます。

は、あなたは、この特定のエンティティを変更したい場合は、あなたのようなものだろう:

$pendingMessage = $this->getRepository('Bundle:PendingMessage')->find(1); 
$detachedEntity = $pendingMessage->getDestination(); 
$entity = $em->merge($detachedEntity); 
$entity->anyChangesYouWant(); 
+0

このシリアル化されたエンティティはどのように保存できますか?テキストとして – jmunozco

+0

:) Googleでそれを見てください。多くの例があります。 – mmmm

関連する問題