作成したテーブルをやり直す方法を記述。
作成したテーブルの状況を確認する
テーブル状況を確認する場合、「php artisan migrate:status」コマンドを叩く。
php artisan migrate:status
Migration name ........................................ Batch / Status
2014_10_12_000000_create_users_table ...................... [3] Ran
2014_10_12_100000_create_password_reset_tokens_table ...... [1] Ran
2014_10_12_100000_create_password_resets_table ............ [2] Ran
2019_08_19_000000_create_failed_jobs_table ................ [1] Ran
2019_12_14_000001_create_personal_access_tokens_table ..... [1] Ran
Batchの状態を見ると、1、2、3の順で実行されたことがわかる。
ロールバックで前の状態に戻す
ロールバックを行うと、直前に行った一連のマイグレーションをなかったことにすることが可能。
ロールバックは、down()メソッドに書かれた処理が実行される。
デフォルトではテーブル削除が記述されているため、テーブルが削除されることとなる。
先ほどのDBではbatchが3のマイグレーションがロールバックされ、状態は「No」と表示される。
php artisan migrate:rollback
直前ではなく、1つ以上前に戻す場合、「–step」パラメータを使用する。
batchの値が3の場合、「php artisan migrate:rollback –step=2」をするとbatchが1の状態まで戻りる。
php artisan migrate:rollback --step=2
全てマイグレーションをリセットする
先ほどまではロールバックにより、前の状態に戻す処理であったが、全てリセットする方法も可能。
リセットする場合、「php artisan migrate:reset」コマンドを叩く。
php artisan migrate:reset
全てマイグレーションをリセットしたのち、再度マイグレーションする
すべてのマイグレーションをロールバックしてから再びマイグレーションする場合、「php artisan migrate:refresh」コマンドを叩く。
php artisan migrate:refresh
全てのテーブルをドロップ(削除)してから再びマイグレーションする
すべてのテーブルをドロップ(削除)してから再びマイグレーションする場合、「php artisan migrate:fresh」コマンドを叩く。
php artisan migrate:fresh
refreshとは異なり、ロールバックが行われない。down()メソッドが実行されず、DBの再構築が行われる。