Php Doctrine2-从两个不同实体到同一实体的多态关联
我仍在试图理解Doctrine2中的多态关联 据我所知,基本多态关联通过使用继承来工作。例如,如果我有表/类OWNER、CAT和DOG,那么启用$OWNER->pet指向CAT或DOG表的方法是让它们各自扩展第四个类pet,即映射超类。然后$owner->pet可以根据分配的内容返回猫或狗,医生2将能够区分它们 这很简单。但是如果我想有两个多态关联,它们可以指向同一个对象呢?例如,假设我有一张海军上将表,每个人都可以指挥一支舰队或一颗行星。也就是说,我有一个扇区表,每个扇区可能包含一个行星或一个月球Php Doctrine2-从两个不同实体到同一实体的多态关联,php,mysql,doctrine-orm,polymorphic-associations,Php,Mysql,Doctrine Orm,Polymorphic Associations,我仍在试图理解Doctrine2中的多态关联 据我所知,基本多态关联通过使用继承来工作。例如,如果我有表/类OWNER、CAT和DOG,那么启用$OWNER->pet指向CAT或DOG表的方法是让它们各自扩展第四个类pet,即映射超类。然后$owner->pet可以根据分配的内容返回猫或狗,医生2将能够区分它们 这很简单。但是如果我想有两个多态关联,它们可以指向同一个对象呢?例如,假设我有一张海军上将表,每个人都可以指挥一支舰队或一颗行星。也就是说,我有一个扇区表,每个扇区可能包含一个行星或一个
假设我想要$adminal->command引用行星和舰队,并且我想要$sector->contents引用行星和卫星。PLANET无法将命令和内容都扩展为映射的超类。是否有其他方法可以实现此功能?您可以尝试ResolveTargetEntityListener 您可以将海军上将的命令属性指向一个接口,该接口由两个行星实现 和舰队
链接文档中的扇区内容也是如此:在大多数情况下,只有单个对象才能实现此接口,因为ResolveTargetEntityListener只能将目标更改为单个对象。似乎这将阻止用于此目的,因为行星和舰队不能同时实现相同的接口。我遗漏了什么吗?我已经在我自己的用例中使用了它,其中属性tarif可以指向其他两个实体,而实体tarif指向的属性受这两个实体的约束。就我而言,它成功了