Как автоматически отражать изменения поля сущности в ее методах? - PullRequest
0 голосов
/ 14 июля 2020

Допустим, это мой класс сущности:

/**
 * @ORM\Entity(repositoryClass=TodoRepository::class)
 */
class Todo
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255,nullable=true)
     */
    private $username;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getUsername(): ?string
    {
        return $this->username;
    }

    public function setUsername(string $username): self
    {
        $this->username = $username;

        return $this;
    }
}

Я хочу изменить имя пользователя поля на name. Я могу сделать это с помощью функции doctrine: schema: update --force в интерфейсе командной строки. Изменение отражается в базе данных. Однако как мне отразить это изменение имени поля в методах класса сущности? Я знаю, что могу сделать это вручную, но это утомительно.

Есть ли способ сделать это динамически? Спасибо за внимание.

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете использовать эти инструменты:

  • symfony / maker-bundle (для генерации новых полей в вашей сущности)
  • doctrine / doctrine - migrations-bundle (для динамического создания скрипта)
  • doctrine: mapping: import для генерации сущностей из существующей базы данных.

Но если вы хотите изменить объект, который вы уже много используете в своем проекте, вам следует использовать умный редактор. Делаю через PHPStorm . Переименование свойства name приведет к обновлению не только сущности, но и всего кода вашего проекта. Каждый раз, когда происходит $user->getUsername(), он будет обновляться до $user->getName()

Рефакторинг Rename и Move работает для файлов, функций, констант, классов, свойств, методов, параметров, а также локальных и глобальных переменных. . Легко и безопасно вносите глобальные изменения в проект. Локальные изменения вносятся мгновенно на месте.

Также доступны следующие варианты рефакторинга: Извлечь переменную / константу / поле / метод / интерфейс, встроенную переменную, элементы Pu sh Up / Pull члены Вниз, Изменить подпись, Переместить класс в другое пространство имен, Переместить элемент состояния c, Выполнить рефакторинг состояния c.

...