Laravel の移行で列を Null 可能にする変更 質問する

Laravel の移行で列を Null 可能にする変更 質問する

署名されていない移行を作成しました。新しい移行をuser_id編集して、これも作成するにはどうすればよいでしょうか?user_idnullable()

Schema::create('throttle', function(Blueprint $table)
{
    $table->increments('id');
    // this needs to also be nullable, how should the next migration be?
    $table->integer('user_id')->unsigned();
}

ベストアンサー1

Laravel 5 では列の変更がサポートされるようになりました。以下は公式ドキュメントからの例です。

Schema::table('users', function($table)
{
    $table->string('name', 50)->nullable()->change();
});

ソース:http://laravel.com/docs/5.0/schema#changeing-columns(列の変更)

Laravel 4 は列の変更をサポートしていないため、生の SQL コマンドを記述するなどの別の手法を使用する必要があります。例:

// getting Laravel App Instance
$app = app();

// getting laravel main version
$laravelVer = explode('.',$app::VERSION);

switch ($laravelVer[0]) {

    // Laravel 4
    case('4'):

        DB::statement('ALTER TABLE `pro_categories_langs` MODIFY `name` VARCHAR(100) NULL;');
        break;

    // Laravel 5, or Laravel 6
    default:                

        Schema::table('pro_categories_langs', function(Blueprint $t) {
            $t->string('name', 100)->nullable()->change();
        });               

}

おすすめ記事