Метод up класса AbstractMigration
Метод up принадлежит абстрактному классу AbstractMigration
и вызывается при выполнении миграции вперёд. Внутри метода описываются
изменения схемы базы данных: создание и удаление таблиц, добавление
и удаление колонок, изменение индексов. Для работы со схемой используется
объект $schema, доступный через свойство $this->schema.
Метод не принимает параметров и не возвращает значения.
Синтаксис
public function up(Schema $schema): void
Пример
Давайте создадим таблицу article с полями id,
title и content:
<?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
{
$table = $schema->createTable('article');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('title', 'string', ['length' => 255]);
$table->addColumn('content', 'text');
$table->setPrimaryKey(['id']);
}
public function down(Schema $schema): void
{
$schema->dropTable('article');
}
}
?>
После выполнения команды миграции таблица будет создана:
php bin/console doctrine:migrations:migrate
Пример
Давайте добавим новую колонку created_at в существующую
таблицу 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
{
$table = $schema->getTable('article');
$table->addColumn('created_at', 'datetime', ['notnull' => false]);
}
public function down(Schema $schema): void
{
$table = $schema->getTable('article');
$table->dropColumn('created_at');
}
}
?>
Результат выполнения кода - колонка created_at появится в таблице:
"column created_at added to table article"
Пример
Давайте удалим таблицу article и создадим вместо неё
таблицу post с полями id и text:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20240103000000 extends AbstractMigration
{
public function up(Schema $schema): void
{
$schema->dropTable('article');
$table = $schema->createTable('post');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('text', 'text');
$table->setPrimaryKey(['id']);
}
public function down(Schema $schema): void
{
$schema->dropTable('post');
$table = $schema->createTable('article');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('title', 'string', ['length' => 255]);
$table->addColumn('content', 'text');
$table->setPrimaryKey(['id']);
}
}
?>
Результат выполнения кода - таблица article удалена,
таблица post создана:
"table article dropped, table post created"
Смотрите также
-
метод
down,
который откатывает изменения миграции -
метод
addSql,
который добавляет SQL-запрос в миграцию -
класс
AbstractMigration,
который является базовым классом миграций -
метод
abortIf,
который прерывает выполнение миграции