Попытки использовать наследование, я создал следующие объекты:Entity наследования в Doctrine не включает OneToOne-отношения
/**
* @ORM\Table(name="persons")
* @ORM\Entity()
*/
class Person
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
protected $name;
/**
* @ORM\OneToOne(targetEntity="Image", cascade={"persist"})
* @ORM\JoinColumn(name="image_id", referencedColumnName="id")
*/
protected $image;
}
/**
* @ORM\Table(name="actors")
* @ORM\Entity()
*/
class Actor extends Person
{
/**
* @ORM\Column(name="character", type="string", length=255)
*/
private $character;
}
/**
* @ORM\Table(name="images")
* @ORM\Entity()
*/
class Image
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="path", type="string", length=255)
*/
private $path;
}
который почти отлично работает. Сгенерированная таблица actors
содержит все поля persons
, за исключением image
-relation. Я попытался изменить отношение к ManyToOne
, что не помогло.
Как сделать Actor
-entity также наследовать все объединенные поля? Я открыт для других решений, если выше это не идеально.
Вы можете попробовать изучить ** наследование таблицы **, которое поддерживает то, что поддерживает Doctrine. Взгляните на [Наследование классов] (http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#class-table-inheritance) – Artamiel