РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
254 of 258 menu

Метод postUp

Метод postUp принадлежит классу AbstractMigration и вызывается автоматически после успешного выполнения метода up. Он не принимает параметров и не возвращает значения. Метод используется для выполнения дополнительных действий: заполнение справочных данных, обновление кэша, запись в лог, отправка уведомлений и любые другие операции, которые должны произойти строго после изменения структуры базы данных.

Важно понимать порядок вызовов: сначала выполняется preUp, затем up и только потом postUp. Если метод up завершится ошибкой, то postUp вызван не будет.

Синтаксис

public function postUp(Schema $schema): void

Пример

Давайте создадим миграцию, которая после создания таблицы заполнит её начальными данными:

<?php namespace DoctrineMigrations; use DoctrineDBALSchemaSchema; use DoctrineMigrationsAbstractMigration; class Version20240101000000 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE article (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); } public function postUp(Schema $schema): void { $this->addSql("INSERT INTO article (title) VALUES ('article 1')"); $this->addSql("INSERT INTO article (title) VALUES ('article 2')"); } public function down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

После применения миграции таблица article будет содержать две записи.

Пример

Давайте выведем сообщение после выполнения миграции:

<?php namespace DoctrineMigrations; use DoctrineDBALSchemaSchema; use DoctrineMigrationsAbstractMigration; class Version20240101000001 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); } public function postUp(Schema $schema): void { $this->write('Migration completed successfully'); } public function down(Schema $schema): void { $this->addSql('DROP TABLE user'); } } ?>

Результат выполнения кода:

"Migration completed successfully"

Метод write выводит сообщение в консоль при выполнении команды doctrine:migrations:migrate.

Пример

Давайте проверим, что таблица существует, и только тогда выполним дополнительные действия:

<?php namespace DoctrineMigrations; use DoctrineDBALSchemaSchema; use DoctrineMigrationsAbstractMigration; class Version20240101000002 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE article (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); } public function postUp(Schema $schema): void { if ($schema->hasTable('article')) { $this->addSql("INSERT INTO article (title) VALUES ('hello')"); } } public function down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

Результат выполнения кода:

[1, 2, 3]

В результате в таблицу article будет добавлена одна запись со значением 'hello'.

Смотрите также

  • класс AbstractMigration,
    который является базовым классом для миграций
  • метод up,
    который применяет изменения схемы базы данных
  • метод preUp,
    который выполняется перед методом up
  • метод addSql,
    который добавляет SQL-запрос в очередь миграции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить