我正在尝试找到设计模型中实体之间关系的最佳方法。我会试着清楚地解释一下。
想象一下以下的Doctrine2实体:
class ImageHistory
{
/**
* @var Image
*/
protected $current;
/**
* @var \Doctrine\Common\Collections\Collection
*/
protected $old;
}
class Dog
{
protected $name;
/**
* @var ImageHistory
*/
protected $imageHistory;
}
class Cat
{
protected $name;
/**
* @var ImageHistory
*/
protected $imageHistory;
}
我想建立两个一对多的双向学说关系,其中Cat
和Dog
是关系的拥有方。 Cat
和Dog
类都有此实体配置:
manyToOne:
imageHistory:
targetEntity: ImageHistory
joinColumn:
name: image_history_id
referencedColumnName: id
如何表示关系的另一面?
oneToMany:
owner:
targetEntity: <What can I write here?>
mappedBy: imageHistory
我想象一个Cat
和Dog
继承Animal
实体类的解决方案,因此我可以将ManyToOne关系移动到Animal
类并放置{{1} }作为OneToMany关系的targetEntity。但是,如果我有一个新的Animal
实体并且:SoundHistory
,Cat
和新的Dog
和Car
类必须与它有关系,则问题会重新出现。< / p>
A不能只将Boat
添加为SoundHistory
类的oneToMany关系,因为Animal
和Car
不会从中继承。所以我仍然无法在Boat
实体中填充我的OneToMany关系的targetEntity
。
在这种情况下设计实体模型的最佳方法是什么?