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

Метод 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,
    который прерывает выполнение миграции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить