概要
Laravelで開発を続けているとMigrationファイルが溜まってくると思います。
Migrationにカラムの追加、変更、削除、テーブルの削除などが溜まっていくと、開発時などに不必要なMigrationの工程が増えてしまいます。
ある程度Migrationが溜まってきたら、どうせもうrollbackしないし、開発環境での実行とかのことも考えると、過去のMigrationをまとめたほうが、Migrationの実行時間が短くなって良いですね。
実際に開発中のプロジェクトでではMigrationにかかる時間が__3分の2に減りました。__
やり方
Migrations Generatorを使います。
最終のリリース2年前だし大丈夫なのか?と疑いましたが、ちゃんと動きました。
仕組みとしては今あるDBの情報をマイグレーションファイル化するという仕組みです。なので、自分たちがいたMigrationファイルを元にMigrationを作ってくれるわけじゃないです。
逆に言うと今までMigrationを使っていなかったプロジェクトでも、これを使えばMigrationでの運用に移行できます。
インストール
composer require --dev "xethron/migrations-generator"
実行
php artisan migrate:generate
これで今のDBの状態からMigrationファイルを作ってくれます。
過去のMigrationファイルとmigrationsテーブル内の履歴を削除する
過去分のmigrationsと内容が被るので、Migrationファイルとmigrationsテーブル内の履歴を削除します。
追記
細かく使ってみましたが、以下の点で問題があるので万能ではなさそうです。
- tinyint型がlengthに限らずbooleanに変換される
- created_at、updated_at以外のtimestamp型がdatetime型に変更される
これらは全て内部で使っているdoctrineの影響です。
doctrineではmysqlのtinyint型はbooleanに変換される、mysql固有のtimestamp型はdatetime型に変換されます。
ここらへんが問題ない場合はお使い下さい。