Вы читаете предварительную версию v0.1. API могут измениться.
~ 1 мин чтенияОбновлено 2026-10-29

Миграции

Миграции фиксируют изменения схемы базы данных. Каждый файл возвращает объект, реализующий интерфейс Migration.

Создание миграции

php elang make:migration create_posts

Измените созданный файл в database/migrations/:

use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Schema\Table;
use Elang\Database\Migration;

return new class implements Migration {
    public function up(Connection $database): void
    {
        $table = new Table('posts');
        $table->addColumn('id', 'integer');
        $table->addColumn('title', 'string', ['length' => 160]);
        $table->setPrimaryKey(['id']);
        $database->createSchemaManager()->createTable($table);
    }

    public function down(Connection $database): void
    {
        $database->createSchemaManager()->dropTable('posts');
    }
};

Применение и проверка

php elang migrate:status
php elang migrate

Миграции выполняются в порядке имён файлов; уже применённые файлы пропускаются. Таблица миграций отслеживает версии и пакеты применения. Не изменяйте применённую миграцию; создайте новую.

Откат

php elang migrate:rollback

Команда вызывает down() для последнего пакета миграций в обратном порядке. Откат может удалить данные. Сначала создайте резервную копию важных данных и проверьте код. Для изменений в рабочей среде требуется --force.

Миграции SQLite и PostgreSQL выполняются в транзакциях. DDL в MySQL может неявно фиксировать транзакцию, поэтому изменения схемы требуют продуманного восстановления после сбоев. Одновременные запуски миграций на одном хосте используют файловую блокировку; при развёртывании на нескольких хостах запускайте миграции из одного задания развёртывания.

Нужна помощь?

Проверьте руководство по решению проблем, найдите термин в глоссарий, или пройдите полноценный проект доски задач.

Поиск по документации Elang

Начните вводить, чтобы найти следующий шаг.