カラム変更するマイグレーション


今回

PHP8.3 laravel11.x DB_CONNECTIONはmysql

でカラムの属性変更をするマイグレーションを作成する

このようなテーブルがあったと仮定します

このtableのpriceのdefaultを0にするマイグレーションを作成します

この時の注意点としては、保持したいカラムの属性定義は明示的に含めておく必要がある

ということです

defaultを0にするだけだからといって

$table->integer('price')->default(0)->change();

みたいなマイグレーションを実行すると

このようになります

priceのdefaultは0になっていますが、unsigned、commentが消えています

今回の例だと

$table->integer('price')->unsigned()->default(0)->comment('価格')->change();

と書いて実行すると期待していた状態になります

これを実行すると

こうなる

新しいテーブル作成やカラム追加はあっても、既存カラムの属性を後から変えることは、なかなかないかもしれませんが、だからたまに実行する時には注意が必要です

マイグレーションファイル作って実行してみて、マイグレーション流れたから終わり

ではなく

ちゃんと実行前後の情報を確認しましょうということです ←これ大事

いや、ほんとに

ちゃんと確認しましょうね

いままで何回もやってるから大丈夫だよ

とか

そんな過信が悲劇を生みます

完全な余談ですが

映画

「グランドイリュージョン3」

が2025年11月US公開予定らしいです

楽しみです