Я пытаюсь найти лучший способ разработки отношений между объектами из моей модели. Я попытаюсь объяснить это ясно.
Представьте себе следующие объекты 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 и поместить Animal как targetEntity отношения OneToMany. Но проблема возникает, если у меня есть новый SoundHistory и: Cat, Dog и новые классы Car and Boat должны иметь отношение к нему.
A не может просто добавить SoundHistory как отношение oneToMany к классу Animal потому что Car and Boat не будет унаследовать его. Поэтому я все еще не могу заполнить targetEntity моего отношения OneToMany в ImageHistory.
Каков наилучший способ создания модели сущности в этом случае?