概要
マイグレーションのロールバック機能を使って、DBの状態を巻き戻します。内部的には、順番にdownメソッドを呼び出して処理していく動きになります。
DBの状況確認
まずは、DBのマイグレーションがどのように行われている状態かを確認します。
コマンドプロンプト等で以下のようにmysqlにログイン、対象DBに接続します。
その後、sqlを実行して、migrationsテーブルの中身を見ると、どのマイグレーションファイルが実行済みかどうかが確認できます。
C:\>mysql -u root -p
MariaDB [none]> use laravel
MariaDB [laravel]> select * from migrations;
+----+-------------------------------------------------------+-------+
| id | migration | batch |
+----+-------------------------------------------------------+-------+
| 1 | 2014_10_12_000000_create_users_table | 1 |
| 2 | 2014_10_12_100000_create_password_resets_table | 1 |
| 3 | 2019_08_19_000000_create_failed_jobs_table | 1 |
| 4 | 2019_12_14_000001_create_personal_access_tokens_table | 1 |
| 5 | 2022_01_04_035005_create_employees_table | 2 |
+----+-------------------------------------------------------+-------+
5 rows in set (0.021 sec)
ロールバック(巻き戻し)
コマンドプロンプトに戻り、artisanコマンドでロールバックします。
php artisan migrate:rollback
上記コマンドで、1batch分ロールバックすることができます。
php artisan migrate:rollback --step=1
どのbatchまで戻るかは、上記のように指定することもできます。
全てロールバックするならstepに*を指定すると、全てロールバックします。
> php artisan migrate:rollback
Rolling back: 2022_01_04_035005_create_employees_table
Rolled back: 2022_01_04_035005_create_employees_table (21.18ms)
MariaDB [laravel]> select * from migrations;
+----+-------------------------------------------------------+-------+
| id | migration | batch |
+----+-------------------------------------------------------+-------+
| 1 | 2014_10_12_000000_create_users_table | 1 |
| 2 | 2014_10_12_100000_create_password_resets_table | 1 |
| 3 | 2019_08_19_000000_create_failed_jobs_table | 1 |
| 4 | 2019_12_14_000001_create_personal_access_tokens_table | 1 |
+----+-------------------------------------------------------+-------+
4 rows in set (0.000 sec)
普通のロールバックを実行すると、batch1つ分のマイグレーションファイルのロールバックが行われました。