Ik heb een tabel waaraan al een standaardwaarde is toegewezen. Als voorbeeld kunnen we naar het volgende kijken:
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('active')->default(1);
});
Ik wil nu mijn standaardwaarde in het actieve veld wijzigen. Ik verwacht zoiets als dit te doen:
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0);
}
});
}
Maar het vertelt me natuurlijk dat de kolom er al is. Hoe kan ik eenvoudig de standaardwaarde van kolom x bijwerken zonder de kolom te laten vallen?
Antwoord 1, autoriteit 100%
U kunt de change()
-methode gebruiken:
Schema::table('users', function ($table) {
$table->integer('active')->default(0)->change();
});
Voer vervolgens de opdracht migrate
uit.
Bijwerken
Gebruik voor Laravel 4 zoiets als dit:
DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
Binnen up()
methode in plaats van Schema::table();
clausule.
Antwoord 2, autoriteit 7%
Je moet de wijzigingsfunctieaanroepen om de kolom bij te werken
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}
Antwoord 3
Maak een nieuw migratiebestand. en gebruik change()
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}
En zorg er ook voor dat u de doctrine/dbal
-afhankelijkheid toevoegt aan uw componist.json-bestand