Метод abortIf класса AbstractMigration
Метод abortIf класса AbstractMigration используется внутри миграций Doctrine для прерывания выполнения миграции, если наступает определённое условие. Первым параметром передаётся логическое условие. Вторым параметром передаётся сообщение об ошибке. Если условие возвращает true, миграция прерывается и выводится сообщение.
Синтаксис
abortIf(bool $condition, string $message)
Пример
Давайте прервём миграцию, если в таблице users уже есть записи:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use DoctrineDBALSchemaSchema;
use DoctrineMigrationsAbstractMigration;
final class Version20240101000000 extends AbstractMigration
{
public function up(Schema $schema): void
{
$count = $this->connection->fetchOne('SELECT COUNT(*) FROM users');
$this->abortIf($count > 0, 'Table users is not empty');
$this->addSql('CREATE TABLE articles (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
}
public function down(Schema $schema): void
{
$this->addSql('DROP TABLE articles');
}
}
?>
Результат выполнения кода при непустой таблице users:
"Migration aborted: Table users is not empty"
Пример
Давайте прервём миграцию, если таблица articles уже существует:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use DoctrineDBALSchemaSchema;
use DoctrineMigrationsAbstractMigration;
final class Version20240101000001 extends AbstractMigration
{
public function up(Schema $schema): void
{
$exists = $this->connection->fetchOne(
"SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'articles'"
);
$this->abortIf($exists > 0, 'Table articles already exists');
$this->addSql('CREATE TABLE articles (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, content TEXT DEFAULT NULL, created_at DATETIME NOT NULL, PRIMARY KEY(id))');
}
public function down(Schema $schema): void
{
$this->addSql('DROP TABLE articles');
}
}
?>
Результат выполнения кода, если таблица articles уже существует:
"Migration aborted: Table articles already exists"
Смотрите также
-
класс
AbstractMigration,
который является базовым классом для всех миграций -
метод
addSql,
который добавляет SQL-запрос в очередь на выполнение -
метод
skipIf,
который пропускает выполнение миграции при условии -
метод
warnIf,
который выводит предупреждение при условии