Сотні файлів сповільнюють створення бази для тестів і CI, а історія давно не потрібна покроково.
php artisan schema:dump --prune
Команда записує поточну схему в database/schema/{connection}-schema.sql і з --prune видаляє наявні міграції. Нова база спершу виконує SQL зі схеми, а потім - міграції, створені після дампу.
На що зважати:
- Різні СУБД. Дамп робиться для конкретного підключення. Якщо тести йдуть на іншій базі (SQLite замість PostgreSQL), потрібен дамп і для неї - інакше тести не зберуть схему.
- Інструменти. Для дампу потрібні
mysqldumpчиpg_dumpна машині, де виконується команда. - Наявні середовища не зачіпаються: продакшен уже має всі ці міграції в таблиці
migrations. - Дані в міграціях. Якщо старі міграції наповнювали довідники, після стискання цих даних у новій базі не буде - їх переносять у сідери.
Альтернатива без стискання - тримати міграції, але прискорити тести: RefreshDatabase мігрує базу один раз на прогін і далі працює транзакціями, тож кількість міграцій впливає лише на старт.