Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2-从两个不同实体到同一实体的多态关联_Php_Mysql_Doctrine Orm_Polymorphic Associations - Fatal编程技术网

Php Doctrine2-从两个不同实体到同一实体的多态关联

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将能够区分它们 这很简单。但是如果我想有两个多态关联,它们可以指向同一个对象呢?例如,假设我有一张海军上将表,每个人都可以指挥一支舰队或一颗行星。也就是说,我有一个扇区表,每个扇区可能包含一个行星或一个

我仍在试图理解Doctrine2中的多态关联

据我所知,基本多态关联通过使用继承来工作。例如,如果我有表/类OWNER、CAT和DOG,那么启用$OWNER->pet指向CAT或DOG表的方法是让它们各自扩展第四个类pet,即映射超类。然后$owner->pet可以根据分配的内容返回猫或狗,医生2将能够区分它们

这很简单。但是如果我想有两个多态关联,它们可以指向同一个对象呢?例如,假设我有一张海军上将表,每个人都可以指挥一支舰队或一颗行星。也就是说,我有一个扇区表,每个扇区可能包含一个行星或一个月球


假设我想要$adminal->command引用行星和舰队,并且我想要$sector->contents引用行星和卫星。PLANET无法将命令和内容都扩展为映射的超类。是否有其他方法可以实现此功能?

您可以尝试ResolveTargetEntityListener

您可以将海军上将的命令属性指向一个接口,该接口由两个行星实现 和舰队


链接文档中的扇区内容也是如此:在大多数情况下,只有单个对象才能实现此接口,因为ResolveTargetEntityListener只能将目标更改为单个对象。似乎这将阻止用于此目的,因为行星和舰队不能同时实现相同的接口。我遗漏了什么吗?我已经在我自己的用例中使用了它,其中属性tarif可以指向其他两个实体,而实体tarif指向的属性受这两个实体的约束。就我而言,它成功了