webentwicklung-frage-antwort-db.com.de

Laravel Migrationen ändern den Standardwert der Spalte

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?

35

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.

42
Alexey Mezenin

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();
        }
    });
}
1
Jerodev