こんにちは、なかしーです。
今日もWEB関連です。DBのお話ですね。
元々Nullableでなかったカラムを途中でNullableにしたくなりました。管理画面からSQL叩いて直接変更するという手もあるんですが、折角Laravel使っているのでMigrationでやる方法で行きたいと思います。
今回もStackOverflowです。
http://stackoverflow.com/questions/24419999/laravel-migration-change-and-make-column-nullable/24425013#24425013
ここの中の、UpとDownで2行ずつあるところを参考にして以下のような感じで実装しました。
const CHGFIELD = 'fieldname'; const ORGTYPE = 'VARCHAR(256)'; /** * Run the migrations. * * @return void */ public function up() { DB::statement('ALTER TABLE `table` MODIFY `'. self::CHGFIELD .'` '. self::ORGTYPE .' NULL;'); DB::statement('UPDATE `table` SET `'. self::CHGFIELD .'` = null WHERE `'. self::CHGFIELD .'` = "0";'); } /** * Reverse the migrations. * * @return void */ public function down() { DB::statement('UPDATE `table` SET `'. self::CHGFIELD .'` = "0" WHERE `'. self::CHGFIELD .'` = NULL;'); DB::statement('ALTER TABLE `table` MODIFY `'. self::CHGFIELD .'` '. self::ORGTYPE .' NOT NULL;'); }
こんな感じです。fieldnameとvarchar部分は今回変更するカラムの内容で、tableは対象テーブル名として下さい。
役に立ったよ、という方、(役に立たなかったよ!という方も)
Facebookページにいいね!して頂けると嬉しいです
受付中イベント情報はこちら
まだの方は、ビジネスクリエーターズへの会員登録をどうぞ。
会員登録は無料です。
明日は大久保さんです。