Как сделать миграцию в Symfony?

В Symfony для выполнения миграций используется библиотека Doctrine Migrations, которая позволяет создавать и применять изменения в схеме базы данных.

Чтобы создать новую миграцию, вам нужно выполнить следующую команду в консоли Symfony:

php bin/console make:migration

После выполнения этой команды, Symfony автоматически создаст новый класс миграции в директории src/Migrations. Новый класс будет содержать пустые "вверх" и "вниз" методы.

В методе "вверх" вы опишете изменения, которые нужно произвести в схеме базы данных при применении миграции. Вы можете использовать SQL-запросы или методы Doctrine, такие как createTable() или addColumn(), чтобы создать, изменить или удалить таблицы, столбцы, индексы и т.д. Пример:

public function up(Schema $schema): void
{
    $table = $schema->createTable('my_table');
    $table->addColumn('id', 'integer', ['auto_increment' => true]);
    $table->addColumn('name', 'string', ['length' => 255]);
    $table->setPrimaryKey(['id']);
}

В методе "вниз" вы должны описать обратные изменения, которые нужно выполнить при откате миграции. Например, удаление таблицы или столбца:

public function down(Schema $schema): void
{
    $schema->dropTable('my_table');
}

После завершения написания миграции, вы можете применить ее к базе данных с помощью следующей команды:

php bin/console doctrine:migrations:migrate

Эта команда выполнит все миграции, которые еще не были применены к базе данных. В процессе выполнения миграций, изменения будут применяться или откатываться в зависимости от их текущего статуса в таблице миграций.

Также, вы можете откатить последнюю миграцию с помощью команды:

php bin/console doctrine:migrations:execute --down <количество миграций>

Например, чтобы откатить последнюю миграцию, выполните:

php bin/console doctrine:migrations:execute --down 1

При создании и применении миграций важно следить за их порядком и не изменять миграции после их применения к базе данных. Если вы изменили миграцию, которая уже была применена, вам нужно создать новую миграцию для фиксации изменений.

В целом, использование миграций в Symfony помогает в управлении изменениями в базе данных и обеспечивает согласованность между различными средами разработки и производства.