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

Метод preUp класса AbstractMigration

Метод preUp класса AbstractMigration вызывается автоматически перед выполнением метода up. Он не принимает параметров и не возвращает значения. Метод используется для подготовки данных, проверки предусловий или логирования перед применением основных изменений схемы базы данных.

Синтаксис

public function preUp(): void

Пример

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

<?php namespace DoctrineMigrations; use DoctrineMigrationsAbstractMigration; use DoctrineDBALSchemaSchema; class Version20240101000000 extends AbstractMigration { public function preUp(Schema $schema): void { $this->write('Starting migration up...'); } 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 down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

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

php bin/console doctrine:migrations:migrate
"Starting migration up..."

Пример

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

<?php namespace DoctrineMigrations; use DoctrineMigrationsAbstractMigration; use DoctrineDBALSchemaSchema; class Version20240101000001 extends AbstractMigration { public function preUp(Schema $schema): void { $count = $this->connection ->fetchOne('SELECT COUNT(*) FROM article'); if ($count > 0) { $this->write('Table already has data'); } } public function up(Schema $schema): void { $this->addSql('ALTER TABLE article ADD created_at DATETIME DEFAULT NULL'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE article DROP created_at'); } } ?>

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

php bin/console doctrine:migrations:migrate
"Table already has data"

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

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