Symfony学说中的一般实体关系


Symfony general entity relationship in Doctrine

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

是否有办法在这个PendingMessage类中做一个ORM关系来存储一个实体,而不是一个特定的实体类型,只是一个一般的实体(类),以便有一个应该是实体类型的名为'$destination'的属性。

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

您可以为PendingMessage实体添加两个参数,一个是entityName,另一个是entityID

使用这些参数,您可以像 那样访问控制器中的存储库。
$em = $this->getDoctrine()->getManager();
$pendingMessage = $this->getRepository('youBundle:PendingMessage')->find(1234);
$targetEntity = $this->getRepository('yourBundle:'.$pendingMessage->getEntityName())->find($pendingMessage->getEntityID());

如果你想对每个可能的实体做同样的操作,我会写一个接口,你将使用的每个存储库使用,以保证这个函数在你将动态接收的每个存储库中给定。

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

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

如果你想改变这个特定的实体,你可以这样做:

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