こんにちは、なかしーです。

今日も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ページにいいね!して頂けると嬉しいです

受付中イベント情報はこちら

まだの方は、ビジネスクリエーターズへの会員登録をどうぞ。
会員登録は無料です。

明日は大久保さんです。

友だち追加数