LoginSignup
11
10

More than 3 years have passed since last update.

LaravelのMigrationファイルをまとめる

Last updated at Posted at 2019-10-17

概要

Laravelで開発を続けているとMigrationファイルが溜まってくると思います。
Migrationにカラムの追加、変更、削除、テーブルの削除などが溜まっていくと、開発時などに不必要なMigrationの工程が増えてしまいます。

ある程度Migrationが溜まってきたら、どうせもうrollbackしないし、開発環境での実行とかのことも考えると、過去のMigrationをまとめたほうが、Migrationの実行時間が短くなって良いですね。

実際に開発中のプロジェクトでではMigrationにかかる時間が3分の2に減りました。

やり方

Migrations Generatorを使います。

Xethron/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型に変換されます。

ここらへんが問題ない場合はお使い下さい。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10