Команда make:migration
Команда make:migration создаёт файл миграции
в каталоге migrations/. Миграция описывает
изменения схемы базы данных: создание таблиц,
добавление или удаление колонок. Первым параметром
можно передать имя миграции, которое попадёт в имя
класса и файла.
Команда доступна благодаря пакету
doctrine/doctrine-migrations-bundle и
symfony/maker-bundle. После генерации файл
содержит пустые методы up и down,
которые нужно заполнить SQL-операциями или вызовами
$this->addSql.
Синтаксис
php bin/console make:migration [name]
Пример
Давайте создадим миграцию для таблицы статей:
php bin/console make:migration create_article_table
После выполнения команды в каталоге
migrations/ появится файл с классом миграции:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20240101120000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create article table';
}
public function up(Schema $schema): void
{
$this->addSql('CREATE TABLE article (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
title VARCHAR(255) NOT NULL,
content CLOB NOT NULL,
created_at DATETIME NOT NULL
)');
}
public function down(Schema $schema): void
{
$this->addSql('DROP TABLE article');
}
}
?>
Метод up выполняется при применении миграции,
а метод down - при откате. Для применения
миграции используется команда:
php bin/console doctrine:migrations:migrate
Результат выполнения команды:
"Migrating up to 20240101120000 from 0"
Пример
Давайте создадим миграцию для добавления колонки
status в таблицу article:
php bin/console make:migration add_status_to_article
Заполним метод up добавлением колонки:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20240101130000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add status column to article table';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE article ADD status VARCHAR(255) NOT NULL');
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE article DROP COLUMN status');
}
}
?>
После применения миграции в таблице появится новая колонка. Проверить статус миграций можно командой:
php bin/console doctrine:migrations:status
Результат выполнения команды:
"Executed 1 out of 2 migrations"
Смотрите также
-
команда
make:entity,
которая создаёт класс сущности Doctrine -
команда
doctrine:migrations:migrate,
которая применяет миграции к базе данных -
команда
doctrine:migrations:diff,
которая генерирует миграцию по разнице схем -
команда
doctrine:migrations:status,
которая показывает статус миграций