Метод 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-запрос в очередь миграции