Таможенная базовая сущность в Symfony 4 - PullRequest
0 голосов
/ 06 марта 2019

Я использую Symfony 4 и с Doctrine, где у меня есть сущности, которые имеют одинаковые общие атрибуты, такие как созданные при редактировании, когда, ...

Я бы хотел сделать следующее:

Определение вида базовой сущности, которая содержит эти общие атрибуты и реализует установщик и получатель. И многие сущности, которые наследуются от этой базовой сущности. Все поля базы данных должны быть определены в таблице соответствующего подобъекта (в БД не следует создавать супер-таблицы или тому подобное).

Пример:

/**
 * @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
    ...
}

Это должно создать таблицы "person" и "car" (каждая с id, create_when), но без таблицы.

Я все еще хотел бы иметь возможность использовать bin / console make: миграцию для обновления схемы базы данных.

Возможен ли такой подход в Symfony 4? Если да, как бы я определил сущности и что я должен изменить с точки зрения конфигурации и т. Д .?

1 Ответ

1 голос
/ 06 марта 2019

Вы ищете наследование сущности

Переписать свой код, как это

/** @MappedSuperclass */
class Base
{
...
}

На самом деле, это часть Доктрины, вот что говорится в официальной документации

Сопоставленный суперкласс - это абстрактный или конкретный класс, который обеспечивает постоянное состояние объекта и информация отображения для его подклассов, но которая сама по себе не является сущностью. Как правило, цель такого сопоставленный суперкласс должен определить информацию о состоянии и отображении, которая общий для нескольких классов сущностей.

...