我仍然试图理解Doctrine2中的多态关联。Doctrine2 - 来自两个不同实体的同一实体的多态关联
据我所知,基本的多态关联使用继承工作。如果,例如,我不得不表/类OWNER
,CAT
和DOG
,然后使$owner->pet
在任一CAT
或DOG
表指向的方式,将有它们各自延伸的第四类,PET
,其被称为一个映射的超类。然后$owner->pet
可能会返回CAT
或DOG
,具体取决于分配的内容,Doctrine2可以区分它们。
这很简单。但是如果我想要有两个可以指向相同对象的多态关联呢?例如,假设我有一张ADMIRALS
的表格,每个表格可以命令FLEET
或PLANET
。我们还要说我有一张SECTORS
的表格,其中每个表格可能包含PLANET
或MOON
。
让我们假设我想$admiral->command
同时引用PLANETS
和FLEETS
,那我想$sector->contents
同时引用PLANETS
和MOONS
。 PLANET
无法扩展command
和contents
作为映射超类。有没有不同的方式来完成这项工作?
从实施该链接处的文档:“在大多数情况下,只有一个对象应该实现此接口,因为ResolveTargetEntityListener只能将目标更改为单个o bject“。 似乎这样会阻止用于此目的,因为PLANETS和FLEETS都不能同时实现相同的接口。我错过了什么吗? –
我已将它用于我自己的用例,其中属性** tarif **可指向2个其他实体,实体** Tarif **指向属性**主题**以指向它们两者。在我的情况下,它解决了 – zavalit