今回
PHP8.3 laravel11.x DB_CONNECTIONはmysql
でカラムの属性変更をするマイグレーションを作成する
このようなテーブルがあったと仮定します
![](https://kis-fukuoka.jp/wp-content/uploads/2024/07/image.png)
![](https://kis-fukuoka.jp/wp-content/uploads/2024/07/image-1-1024x181.png)
このtableのpriceのdefaultを0にするマイグレーションを作成します
この時の注意点としては、保持したいカラムの属性定義は明示的に含めておく必要がある
ということです
defaultを0にするだけだからといって
$table->integer('price')->default(0)->change();
みたいなマイグレーションを実行すると
![](https://kis-fukuoka.jp/wp-content/uploads/2024/07/image-2-1024x172.png)
このようになります
priceのdefaultは0になっていますが、unsigned、commentが消えています
今回の例だと
$table->integer('price')->unsigned()->default(0)->comment('価格')->change();
と書いて実行すると期待していた状態になります
![](https://kis-fukuoka.jp/wp-content/uploads/2024/07/image-3.png)
これを実行すると
![](https://kis-fukuoka.jp/wp-content/uploads/2024/07/image-4-1024x174.png)
こうなる
新しいテーブル作成やカラム追加はあっても、既存カラムの属性を後から変えることは、なかなかないかもしれませんが、だからたまに実行する時には注意が必要です
マイグレーションファイル作って実行してみて、マイグレーション流れたから終わり
ではなく
ちゃんと実行前後の情報を確認しましょうということです ←これ大事
いや、ほんとに
ちゃんと確認しましょうね
いままで何回もやってるから大丈夫だよ
とか
そんな過信が悲劇を生みます
完全な余談ですが
映画
「グランドイリュージョン3」
が2025年11月US公開予定らしいです
楽しみです