laravel でmigrate するとき、特定のファイルだけを実行したい
migrate refresh とかだと全部のテーブルが再生成されちゃうので、別のテーブルデータを消さずに特定のテーブルだけを再構築したい。
サンプル
指定したマイグレーションのファイルだけを実行する
artisan migrate:refresh --step=1 --path=/database/migrations/2019_09_18_182637_create_users_table.php
指定方法
上記のコマンドは、次のように分解できる。
## マイグレーションを全部実行する
php artisan migrate:refresh
これと個数を組み合わせ
## マイグレーションを先頭から1つだけ php artisan migrate:refresh --step=1
さらにパスを指定する。
## マイグレーションを指定したファイルから1つだけ php artisan migrate:refresh --step=1 --path=/database/migrations/ファイル名
パスの設定や step の指定を忘れて migrate:refresh すると全部消えちゃうので注意が必要。
どういうときに使うのか
テーブルを追加するときにアレコレ試しているローカル環境で使う。
いちいち seeder や seed を使ってデータを追加するのも面倒なので。
テーブルの定義のマイグレーションを、指定して再実行したり、テーブル定義を書き直したりしたときに使います。
これを使うことで、テーブル定義のを書いながら何度も試せるので、マイグレーションをfresh でゼロからしてしまうことなくなるので便利です。
laravel だとテーブル定義を作りながら考えられるのはいいことだと思います。
併せて使いたい status コマンド
migrate:status をつかえば、いまどこまでmigration が適用されているかわかる。
artisan migrate:status
マイグレーションの適用結果はデータベースに格納されている。それをコマンドから見ることができる。
参考資料
https://stackoverflow.com/questions/45473624/laravel-5-4-specific-table-migration