🧱 Суть
Миграции позволяют изменять структуру базы данных, а Laravel хранит историю их выполнения и умеет откатывать изменения.
📦 Проблема
1. Непонятно, что откатывает rollback
php artisan migrate:rollbackКажется, что команда отменяет только последнюю миграцию.
2. Непонятно, что такое Blueprint
Schema::table('users', function (Blueprint $table) {
//
});Неочевидно, зачем нужен объект $table.
✅ Решение
Понимать две основные сущности:
rollbackработает с историей миграцийBlueprintописывает изменения таблицы
💻 Код
Rollback
Laravel хранит информацию о выполненных миграциях в таблице:
migrationsПример:
| id | migration | batch |
|---|---|---|
| 1 | create_users_table | 1 |
| 2 | add_avatar_to_users | 2 |
| 3 | rename_name_to_username | 3 |
Batch
batch – группа миграций, выполненных за один запуск:
php artisan migrateОткат последнего batch
php artisan migrate:rollbackLaravel:
- находит последний batch
- вызывает
down()у всех миграций из этой группы
Откат нескольких batch
php artisan migrate:rollback --step=3Blueprint
Blueprint описывает изменения структуры таблицы.
Например:
$table->string('email');$table->integer('age');Laravel преобразует это в SQL:
ALTER TABLE users ADD email VARCHAR(255);ALTER TABLE users ADD age INT;Можно воспринимать Blueprint как конструктор SQL-запросов.
🎯 Вывод
rollbackоткатывает последний batch, а не одну миграцию- Laravel хранит историю миграций в таблице
migrations Blueprintописывает изменения таблицы- Laravel автоматически превращает методы
Blueprintв SQL