🍣
doctrine/dbalでカラムの型が変更できなかったときの対処法(Laravel)
カラムの名前や型を変更するには、基本的に doctrine/dbal
を使用すればちょちょいのちょいだと思うのですが、なぜか僕の場合はstringからintに変更する際にうまくいきませんでした。
原因は不明なままですが、回避策がありましたのでそちらを紹介します。
通常はdoctrine/dbalでできるはず
ライブラリをインストールして、
composer require doctrine/dbal
マイグレーションファイル内でこのように記述すればstringからint型に変更できる
public function up()
{
Schema::table('products', function (Blueprint $table) {
$table->integer('product_id')->default(NULL)->change();
});
}
はずだった。
回避策
どのようなエラーが出たかも忘れましたが、このようにすれば変更できました。
public function up()
{
DB::statement('ALTER TABLE products MODIFY product_id INT NULL;');
}
SQLを書いちゃう方法もできるんですね。
一応カラム名の変更とかは doctrine/dbal
ライブラリでいけたので、基本は doctrine/dbal
を使用するのが楽で安心だと思います。
終わりに
複数のやり方を知っておくと、1つのやり方で困ったときに別のやり方でできるので、色んな方法を知っておくほうが良いなあと痛感しました。
もうマイグレーションには負けない。
Discussion