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

Класс AbstractMigration

Класс AbstractMigration наследуется всеми классами миграций Doctrine в Symfony. Он реализует интерфейс MigrationInterface и предоставляет методы up и down, которые описывают изменения схемы базы данных при применении и откате миграции. Внутри этих методов используется объект $this->connection для выполнения SQL-запросов и $this->addSql для добавления запросов в очередь выполнения. Также доступны методы preUp, postUp, abortIf, skipIf и warnIf для управления ходом выполнения миграции.

Синтаксис

<?php abstract class AbstractMigration implements MigrationInterface { public function up(Schema $schema): void { // ... } public function down(Schema $schema): void { // ... } } ?>

Пример

Давайте создадим миграцию, которая добавляет таблицу article с полями id, title и content:

<?php namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240101000000 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE article ( id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(255) NOT NULL, content TEXT NOT NULL )'); } public function down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

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

php bin/console doctrine:migrations:migrate
"Migrating up to 20240101000000" "Table article created successfully"

Пример

Давайте добавим новое поле created_at в таблицу article:

<?php namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240102000000 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('ALTER TABLE article ADD COLUMN created_at DATETIME DEFAULT NULL'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE article DROP COLUMN created_at'); } } ?>

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

php bin/console doctrine:migrations:migrate
"Migrating up to 20240102000000" "Column created_at added successfully"

Пример

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

<?php namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240103000000 extends AbstractMigration { public function up(Schema $schema): void { $this->abortIf( !$schema->hasTable('article'), 'Table article does not exist' ); $this->addSql('ALTER TABLE article ADD COLUMN status VARCHAR(50) DEFAULT NULL'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE article DROP COLUMN status'); } } ?>

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

php bin/console doctrine:migrations:migrate
"Migrating up to 20240103000000" "Column status added successfully"

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

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