Laravelのmigrateを途中から実行する
migrateを途中から実行
Laravelのphp artisan migrate
を途中から実行するためのメモ。
なぜ途中からかというと、既存システムのDBをマイグレーションで管理できるようする際に必要になったため。
解決策
php artisan migrate
を実行するとDBにmigrations
が作成される。
マイグレーションの履歴をDBで保存しているのだ。このことを生かして、migrations
テーブルに対してここまではマイグレーションを実行しましたよ、とデータを作ることで疑似的に認識させる。
作ってあげるデータは、id
,migration
, batch
を持つデータで、id
は1からインクリメント、migration
はマイグレーションのファイル名(.phpは除く)、batch
を1(たぶんこれは何度マイグレーションを実行したかを保っておくもので状態を1つ戻すときに使われるのでは?)に設定すればよい。
以下に例を挙げる。
id | migration | batch |
---|---|---|
1 | 2017_09_01_134421_create_prefectures_table | 1 |
2 | 2017_09_01_134422_create_cities_table | 1 |
自作したマイグレーションが正しく認識されているかを確認するためには、以下を実行する。
php artisan migrate:status > +------+-----------------------------------------------+ | Ran? | Migration | +------+-----------------------------------------------+ | Y | 2017_09_01_134421_create_prefectures_table | | Y | 2017_09_01_134422_create_cities_table | | N | 2017_09_10_115421_create_users_table | +------+-----------------------------------------------+
Y
になっていれば正しく認識されている。Nであれば、正しく認識されていない、もしくはまだ認識されていないので、php artisan migrate
を実行するとマイグレーションが動く、ということになる。