2014-04-09 52 views
0

我仍然试图理解Doctrine2中的多态关联。Doctrine2 - 来自两个不同实体的同一实体的多态关联

据我所知,基本的多态关联使用继承工作。如果,例如,我不得不表/类OWNERCATDOG,然后使$owner->pet在任一CATDOG表指向的方式,将有它们各自延伸的第四类,PET,其被称为一个映射的超类。然后$owner->pet可能会返回CATDOG,具体取决于分配的内容,Doctrine2可以区分它们。

这很简单。但是如果我想要有两个可以指向相同对象的多态关联呢?例如,假设我有一张ADMIRALS的表格,每个表格可以命令FLEETPLANET。我们还要说我有一张SECTORS的表格,其中每个表格可能包含PLANETMOON

让我们假设我想$admiral->command同时引用PLANETSFLEETS,那我想$sector->contents同时引用PLANETSMOONSPLANET无法扩展commandcontents作为映射超类。有没有不同的方式来完成这项工作?

回答

0

你可以尝试ResolveTargetEntityListener see

你可以上将的命令属性指向一个接口,它是由这两个行星 和船队

同样是行业的内容

+0

从实施该链接处的文档:“在大多数情况下,只有一个对象应该实现此接口,因为ResolveTargetEntityListener只能将目标更改为单个o bject“。 似乎这样会阻止用于此目的,因为PLANETS和FLEETS都不能同时实现相同的接口。我错过了什么吗? –

+0

我已将它用于我自己的用例,其中属性** tarif **可指向2个其他实体,实体** Tarif **指向属性**主题**以指向它们两者。在我的情况下,它解决了 – zavalit

相关问题