Я пытаюсь найти лучший способ разработки отношений между объектами из моей модели. Я попытаюсь объяснить это ясно.
Представьте себе следующие объекты 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
.
Каков наилучший способ создания модели сущности в этом случае?