Laravelにて、migrateをやり直すコマンド

作成したテーブルをやり直す方法を記述。

作成したテーブルの状況を確認する

テーブル状況を確認する場合、「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の再構築が行われる。