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

Метод warnIf

Метод warnIf класса AbstractMigration выводит предупреждающее сообщение во время выполнения миграции. Первым параметром передаётся условие, при котором нужно показать предупреждение, вторым - текст сообщения. Метод удобен для информирования разработчика о потенциально опасных изменениях схемы базы данных.

Синтаксис

warnIf(bool $condition, string $message): void

Пример

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

<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240101000000 extends AbstractMigration { public function up(Schema $schema): void { $count = $this->connection ->fetchOne('SELECT COUNT(*) FROM article'); $this->warnIf( $count > 0, 'В таблице article уже есть записи' ); $this->addSql('ALTER TABLE article ADD user_id INT'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE article DROP user_id'); } } ?>

Если в таблице article есть хотя бы одна запись, при выполнении миграции будет выведено предупреждение:

[WARNING] В таблице article уже есть записи

Пример

Давайте проверим наличие колонки перед её удалением и предупредим, если она содержит данные:

<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240102000000 extends AbstractMigration { public function up(Schema $schema): void { $schemaManager = $this->connection->createSchemaManager(); if ($schemaManager->tablesExist(['user'])) { $count = $this->connection ->fetchOne('SELECT COUNT(*) FROM user'); $this->warnIf( $count > 0, 'Удаление таблицы user приведёт к потере данных' ); $this->addSql('DROP TABLE user'); } } public function down(Schema $schema): void { $this->addSql('CREATE TABLE user (id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); } } ?>

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

[WARNING] Удаление таблицы user приведёт к потере данных

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

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