はじめに
LaravelのMigrationファイル、多くて多くて大変ですよね🥺
数々のまとめる手段がありますが...
私から一つの手段として
テーブルごとにディレクトリを切って管理するやり方
をここに落とします。
(既出でしたらすみませんです)
なぜテーブルごとに分けるか
AAAテーブルのxxxカラムっていつ追加されたんだ?
BBBテーブルはいつDropされた?
CCCテーブルのyyyカラムはいつ変更して、どのタイミングで削除された?
テーブルの変更履歴全体含めて確認したいぞ...!
2025_01_01_01001018_create_users_table.php
2025_01_05_02003209_add_column_users_table.php
2025_01_23_10031042_create_roles_table.php
2025_01_23_11030031_insert_roles_record_table.php
2025_02_05_02105203_add_column_users_table.php
2025_02_06_07503203_update_column_users_table.php
...
2025_04_05_15003800_add_column_users_table.php
ファイル名がしっかり管理されていればいいですが、
そうじゃない場合は追うの大変です...😫
テーブルごとにディレクトリが分かれていれば、
目的のテーブルディレクトリにMigrationファイルが集約されてみやすくなります
結局そのままだと上から時系列で追いかけたり、
ファイルを開いて、「ちがうな〜」となったりします。
用事があるテーブルディレクトリにいけば良い世界になります。
また、テーブル自体が消えたら、
users
→ deleted_users
とかにディレクトリ名変えられていいですよ!
Migration自体には全く影響がでないので!
構成ふくめてどうなるか
下記のようになります!
テーブル名のディレクトリにアクセスすれば、
そのテーブルに絞られた形でMigrationファイルを確認することができますね!
project-root/
├── ...
│
└── database/
├── factories/
├── migrations/
│ ├── users/
│ │ ├── 2025_01_01_01001018_create_users_table.php
│ │ ├── 2025_01_05_02003209_add_column_users_table.php
│ │ ├── 2025_02_05_02105203_add_column_users_table.php
│ │ ├── 2025_02_06_07503203_update_column_users_table.php
│ │ └── 2025_04_05_15003800_add_column_users_table.php
│ └── roles/
│ ├── 2025_01_23_10031042_create_roles_table.php
│ └── 2025_01_23_11030031_insert_roles_record_table.php
└── seeders/
注意点
- テーブルを跨ぐMigrationファイルがある場合どうにかバラすか、どちらかのディレクトリに寄せる判断が必要です
- 一つのMigrationファイルで複数テーブルを作成している
- 複数テーブルにまとめてマスターデータを入れている
- FKをまとめて貼っているMigrationファイルがある
- データメンテ系のMigrationファイルは入れない方が良いです
- データメンテ系のMigrationファイルを入れるとディレクトリの中が肥大して結局追いにくくなる可能性があります
Migration方法
この構成にした場合は下記のartisanコマンドで実行できます。
php artisan migrate --path=database/migrations/*
まとめ
これからLaravelプロジェクトを始めるかたや、
Migrationファイルが綺麗にまとまっているプロジェクトではすぐに導入できるかと思います!
このまとめ方すれば、
探す手間が省けてイライラもせずに済むので、
良さそうだなと思った方はぜひ試してください〜!