J'ai une table avec une valeur par défaut déjà assignée. Pour un exemple, nous pouvons regarder ce qui suit:
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('active')->default(1);
});
Je veux maintenant changer ma valeur par défaut sur le champ actif. Je compte faire quelque chose comme ça:
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0);
}
});
}
Mais bien sûr, cela me dit que la colonne est déjà là. Comment puis-je simplement mettre à jour la valeur par défaut de la colonne x sans supprimer la colonne?
Vous pouvez utiliser la méthode change()
:
Schema::table('users', function ($table) {
$table->integer('active')->default(0)->change();
});
Puis exécutez la commande migrate
.
Mettre à jour
Pour Laravel 4 utilisez quelque chose comme ceci:
DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
Dans la méthode up()
au lieu de la clause Schema::table();
.
Vous devez appeler le fonction de changement pour mettre à jour la colonne
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}