Wie kann ich ändern, eine migration in Laravel?
Ich versuche so ändern Sie eine vorhandene migration. Ich meine, hier ist meine derzeitige migration Klasse:
class CreateLogForUserTable extends Migration
{
public function up()
{
Schema::create('log_for_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('table_name');
$table->string('error_message');
$table->unsignedTinyInteger('error_code');
$table->timestamps();
});
}
public function down()
{
Schema::drop('log_for_user');
}
}
Habe ich auch ausgeführt dieser php artisan migrate
Befehl einmal. Jetzt muss ich hinzufügen ->nullable()
Methode, um die error_message
Spalte. Also bearbeitete ich meinen migration, so etwas wie dieses:
.
.
$table->string('error_message')->nullable();
.
.
Aber wenn ich ausführen php artisan migrate
wieder, er sagt:
Nichts zu migrieren.
Sowieso, wie kann ich die neue version des migration?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine neue migration mit dem Befehl:
Dann, in diesem erstellt migration, Klasse, fügen Sie diese Zeile, mit der
change
Methode wie diese:Um diese änderungen vorzunehmen, und führen Sie die migration, verwenden Sie den Befehl:
und ein rollback für die änderungen, verwenden Sie den Befehl:
Können Sie rollback eine begrenzte Anzahl von Migrationen durch die Bereitstellung der
step
option, um den Befehl rollback. Zum Beispiel wird der folgende Befehl rollback der letzten fünf Migrationen:change()
Methode? Wenn ich will, um einen index hinzuzufügen, (wieunique()
) stattnullable()
, noch brauche ichchange()
so?$table->string('error_message')->unique()->change();
change
Methode erzählt laravel zu ändern, dass bestimmte Abfrage!composer require doctrine/dbal
php artisan migrate
bedauere ich jetzt, wie kann ich wieder einen Schritt zurück gehen?php artisan migrate:rollback
Wenn Ihre app wird nicht in der Produktion, und Sie Samen Ihrer Daten, das beste, was Sie tun können, ist zu führen:
Diesem Befehl löschen Sie alle Tabellen und erstellt Sie erneut. Dann wird es die Samen, die Daten.
Wenn Sie zusätzliche Migrationen für jede änderung während der Entwicklung, werden Sie am Ende mit Hunderten von Migrationen Klassen.
--seed
genau das tut? Ich weiß, wasmigration:refresh
tut, aber ich weiß nicht, was--seed
macht ..php artisan db:seed
Befehl. Sie können darüber Lesen Sie hier.Können Sie die
ändern -
Methode, die es erlaubt, Sie zu ändern vorhandener Spalten-Typen zu einem neuen Typ oder ändern Sie die Spalte Attribute.Beispielsweise ändern einer Spalte, die null-Werte zulassen:
Aber zuerst müssen Sie die
doctrine/dbal
Paketchange()
Methode? Wenn ich will, um einen index hinzuzufügen, (wieunique()
) stattnullable()
, noch brauche ichchange()
so?$table->string('error_message')->unique()->change();
change
Methode fürunique
. Es einfach verwenden, wie dies$table->unique('error_message');
in eine neue Migrations-Datei.Gibt es 2 Möglichkeiten, dies zu tun:
php artisan migrate:refresh
. Dies wird rollback alle IhreMigration und migrieren Sie alle Ihre Migrationen. Wenn Sie diesen Befehl ausführen,
alle eingefügten Daten in der Datenbank verloren.
Laufen
php artisan make:migration enter_your_migration_name_here
.Dann fügen Sie diese in Ihre migration aus:
$table->string('error_message')->nullable()->change();
Führen
php artisan migrate
um Ihren Tisch wechselt. (Beachten Sie, dass wenn Sie dies tun, müssen Sie benötigencomposer require doctrine/dbal
in Ihr Komponist)