Ich habe eine Tabelle mit einem bereits zugewiesenen Standardwert. Als Beispiel können wir uns Folgendes ansehen:
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('active')->default(1);
});
Ich möchte jetzt meinen Standardwert im aktiven Feld ändern. Ich erwarte, dass ich so etwas mache:
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0);
}
});
}
Aber natürlich sagt es mir, dass die Kolumne schon da ist. Wie kann ich einfach den Standardwert von Spalte x aktualisieren, ohne die Spalte zu löschen?
Sie können die Methode change()
verwenden:
Schema::table('users', function ($table) {
$table->integer('active')->default(0)->change();
});
Führen Sie dann den Befehl migrate
aus.
Update
Verwenden Sie für Laravel 4 etwa Folgendes:
DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
Innerhalb der up()
-Methode anstelle der Schema::table();
-Klausel.
Sie müssen Änderungsfunktion aufrufen, um die Spalte zu aktualisieren
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}