2016-08-18 79 views
0

我需要实现一个PendingMessage类来存储Symfony2应用程序的一些实体的通知。有时会为一个实体创建通知,有时会为另一个实体创建通知(有许多实体)。Symfony在Doctrine中的一般实体关系

有没有办法在这个PendingMessage类中做一个ORM关系来存储一个实体,但不是一个特定的实体类型,只是一个普通的实体(类),为了有一个名为'$ destination'的属性应该是一个实体类型。

我应该实现一个接口吗?欢迎任何帮助!

回答

1

您可以将2个参数添加到您的PendingMessage实体,一个entityName,另一个entityID

有了这些参数,你可以访问该存储库中的控制器一样

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

如果你想用这个PendingMessage每一个实体可以做同样的操作,我会写将要使用的接口通过您将使用的每个存储库,可以确保在您将动态接收的每个存储库中提供此函数。

如果这不是你想要的,请澄清你的问题。

+0

是的,我想这就是我要找的......但我不知道该怎么实现这个...这两个参数的接口? – jmunozco

1

您可以在PendingMessage实体中添加字段,您将在其中存储为其创建此消息的序列化实体。

然后如果你想改变这个特殊的实体,你会做这样的事情:

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

如何存储这个序列化的实体? – jmunozco

+0

作为文本:)在谷歌查找它。有很多例子。 – mmmm