デフォルト値がすでに割り当てられているテーブルがあります。例として、次を見ることができます。
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('active')->default(1);
});
ここで、アクティブフィールドのデフォルト値を変更します。私はこのようなことをすることを期待しています:
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0);
}
});
}
しかし、もちろん、それはコラムがすでにそこにあることを教えてくれます。列をドロップせずに列xのデフォルト値を単純に更新するにはどうすればよいですか?
change()
メソッドを使用できます:
_Schema::table('users', function ($table) {
$table->integer('active')->default(0)->change();
});
_
次に、migrate
コマンドを実行します。
更新
Laravel 4の場合、次のようなものを使用します。
_DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
_
up()
句ではなくSchema::table();
メソッド内。
change function を呼び出して列を更新する必要があります
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}