В 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 помогает в управлении изменениями в базе данных и обеспечивает согласованность между различными средами разработки и производства.