Откат и пересоздание БД
Laravel предоставляет команды для управления состоянием БД.
migrate
Накатывает все новые миграции:
php artisan migrate
migrate:rollback
Откатывает последний батч:
php artisan migrate:rollback
php artisan migrate:rollback --step=3
--step=3 откатывает 3 последние миграции, независимо от батча.
migrate:reset
Откатывает все миграции:
php artisan migrate:reset
migrate:refresh
Откатывает и накатывает заново:
php artisan migrate:refresh
php artisan migrate:refresh --seed
migrate:fresh
Сносит все таблицы и накатывает заново, не используя down:
php artisan migrate:fresh
php artisan migrate:fresh --seed
Быстрее, чем refresh, потому что не выполняет down-миграции.
migrate:status
Показывает статус:
php artisan migrate:status
Вывод:
Migration name .................... Batch / Status
2026_01_01_create_users_table .... [1] Ran
2026_01_02_create_posts_table .... [1] Ran
2026_01_03_add_status_to_posts ... [2] Ran
migrate --pretend
Показывает SQL, который будет выполнен, без реального запуска:
php artisan migrate --pretend
migrate --force
В продакшене миграции требуют подтверждения. --force обходит его:
php artisan migrate --force
Советы
- Никогда не редактируй уже накатанную миграцию на продакшене
- Всегда пиши
down, даже если не собираешься откатывать - Тестируй миграции на локальной БД перед деплоем
- Не используй
migrate:freshна продакшене — потеряешь данные