Я использую Symfony 4 и Doctrine, где у меня есть объекты, которые имеют одинаковые общие атрибуты, такие как createdWhen, editedWhen, ...
Я бы хотел сделать следующее:
Определение типа базовой сущности, которая содержит эти общие атрибуты и реализует сеттер и геттер. И многие сущности, которые наследуются от этой базовой сущности. Все поля базы данных должны быть определены в таблице соответствующей суб-сущности (в db не должно создаваться супертаблицы и т.п.).
Пример:
/**
* @ORM\Entity(repositoryClass="App\Repository\BaseRepository")
*/
class Base
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=127, nullable=true)
*/
private $createdWhen;
// Getter and setter
...
}
/**
* @ORM\Entity(repositoryClass="App\Repository\PersonRepository")
*/
class Person extends Base
{
/**
* @ORM\Column(type="string", length=127, nullable=true)
*/
private $name;
// Getter and setter
...
}
/**
* @ORM\Entity(repositoryClass="App\Repository\CarRepository")
*/
class Car extends Base
{
/**
* @ORM\Column(type="string", length=127, nullable=true)
*/
private $brand;
// Setter and getter
...
}
Это должно создать таблицы «человек» и «автомобиль» (каждая с идентификатором created_when), но без таблицы base.
Я все еще хотел бы иметь возможность использовать bin / console make: migration для обновления схемы базы данных.
Возможен ли такой подход с Symfony 4? Если да, то как мне определить объекты и что мне нужно изменить с точки зрения конфигурации и т. Д.?