カラムの変更には事前にdoctrine/dbalが必要なのでインストール
$ composer require doctrine/dbal
テーブル名bookのmigrationを作成
$ php artisan make:migration --table book change_book_table
Created Migration: 2015_09_28_001116_change_book_table
作成されたファイルを編集し、up()にカラムの変更処理と、down()にその変更を取り消す処理を追加します。
2015_09_28_001116_change_book_table.php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class ChangeBookTable extends Migration
{
public function up()
{
Schema::table('book', function (Blueprint $table) {
// noteカラムにNULLを許容
$table->text('note')->nullable()->change();
});
}
public function down()
{
Schema::table('book', function (Blueprint $table) {
// 既にテーブルの対象カラムにNULLを登録しているならば必要
// DB::statement('UPDATE `book` SET `note` = "" WHERE `note` IS NULL');
// noteカラムにNULLを許容しない
// 5.5以降?
$table->text('note')->nullable(false)->change();
// 5.5以前?
DB::statement('ALTER TABLE `book` MODIFY `note` TEXT NOT NULL;');
});
}
}
nullable()でカラムにNULL値を許容し、change()で変更を実行します。
それをNULLを許容しない形にするにはnullableの引数にfalseを記載してあげればいいです。
Laravel 5.5のドキュメントからnullableに値を設定できるような記載が追加されました。
これにより、以前のようなクエリを書かなくて済むようです。
5.5以前で使えない場合、Laravelのスキーマビルダーには存在しないようなのでSQLを直に書いてNULL値を許容しないように変更を加えることになります。