我试图从我的模型中找到设计实体之间关系的最佳方法。我会尽量解释清楚的
设想以下Doctrine2实体:
类图像历史记录
{
/**
*@var图像
*/
受保护的美元流动;
/**
*@var\Doctrine\Common\Collections\Collection
*/
受保护$old;
}
班犬
{
受保护的$名称;
/**
*@var ImageHistory
*/
受保护的历史记录;
}
班猫
{
受保护的$名称;
/**
*@var ImageHistory
*/
受保护的历史记录;
}
我想建立两个一对多的双向条令关系,其中Cat和Dog是关系的拥有方。Cat和Dog类都具有此实体配置:
多通:
影像历史:
目标实体:图像历史
joinColumn:
名称:图像\u历史\u id
referencedColumnName:id
如何表示te关系的另一面
oneToMany:
所有者:
目标:<;我可以在这里写什么?>;
mappedBy:imageHistory
我设想了一个解决方案,Cat和Dog继承了一个Animal实体类,因此我可以将多人关系移动到Animal类中,并将Animal作为一人关系的目标实体。但是,如果我有一个新的声音历史实体,并且:猫,狗和新的汽车和船类必须与之相关,那么问题就会再次出现
A不能仅仅将声音历史添加为动物类的单一关系,因为汽车和船不会从中继承。因此,我仍然无法在ImageHistory实体中填充我的OneToMany关系的targetEntity
在这种情况下,设计实体模型的最佳方法是什么
多对一关系是单向的,因此不能表示另一方
此外,如果你真的想把狗和猫放在同一张桌子上,你应该考虑创建一个超级实体。