MySQLのカラム定義を変更する

MySQLのカラム定義を変更する

こんにちは、なかしーです。
今日も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ページにいいね!して頂けると嬉しいです
受付中イベント情報はこちら
まだの方は、ビジネスクリエーターズへの会員登録をどうぞ。
会員登録は無料です。
明日は大久保さんです。
友だち追加数

Nakashima