Ще одна альтернатива згаданим, якщо вам потрібно зробити це чимало разів з тими ж міграціями. Особисто я думаю, що це додає великої гнучкості вашим міграціям.
Додайте database/migrations
до об'єкта автозавантаження composer.json
подібне:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations" // add this line
]
},
Потім додайте namespace Database\Migrations;
до всіх міграційних файлів.
Потім запустіть, $ composer dump-autoload
щоб оновити composer.lock
файл.
Тоді, якщо припустити, що ваш клас для міграції є AlterTableWebDirectories
, ви можете створити таку команду:
$ php artisan make:command DropAlterTableWebDirectories
І запишіть цю логіку у свій handle()
метод:
public function handle {
(new AlterTableWebDirectories)->down();
DB::raw("delete from migrations where migration like '%alter_table_web_directories%'");
}
Це зробить саме те, що ви хочете. Якщо ви хочете декрементувати кількість міграцій замість того, щоб видаляти її, ви, ймовірно, можете з'ясувати, як змінити DB:raw
команду.
Цю команду можна розширити, щоб дозволити динамічно вибирати, яку міграцію ви відміняєте, передаючи аргумент в команду.
Потім, коли ви читаєте знову перенести цей файл, ви можете просто запустити, php artisan migrate
і він перемістить лише цей файл .
Цей процес дозволяє вносити конкретні зміни в міграції без необхідності проводити повне оновлення та вивільнення кожного разу.
Особисто мені потрібно багато цього робити, бо моє насіння досить велике.