それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

laravel のマイグレーションで特定のmigration のファイル名指定して、一つだけ再度・何度も実行したい

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