Ich kann mit dem Laravel-Framework nicht herausfinden, wie ich meiner vorhandenen Datenbanktabelle eine neue Spalte hinzufügen kann.
Ich habe versucht, die Migrationsdatei mit ...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
Im Terminal führe ich php artisan migrate:install
und aus migrate
.
Wie füge ich neue Spalten hinzu?
php
laravel
laravel-4
laravel-migrations
Kim Larsen
quelle
quelle
Antworten:
Um eine Migration zu erstellen, können Sie den Befehl migrate: make in der Artisan-CLI verwenden. Verwenden Sie einen bestimmten Namen, um Konflikte mit vorhandenen Modellen zu vermeiden
für Laravel 3:
für Laravel 5+:
Sie müssen dann die
Schema::table()
Methode verwenden (wenn Sie auf eine vorhandene Tabelle zugreifen und keine neue erstellen). Und Sie können eine Spalte wie diese hinzufügen:und vergessen Sie nicht, die Rollback-Option hinzuzufügen:
Dann können Sie Ihre Migrationen ausführen:
Dies alles wird in der Dokumentation für Laravel 3 ausführlich behandelt:
Und für Laravel 4 / Laravel 5:
Bearbeiten:
Verwenden
$table->integer('paid')->after('whichever_column');
Sie diese Option, um dieses Feld nach einer bestimmten Spalte hinzuzufügen.quelle
php artisan migrate
php artisan make:migration add_paid_to_users
Ich werde die Antwort von mike3875 für zukünftige Leser mit Laravel 5.1 und höher ergänzen.
Um die Dinge schneller zu machen, können Sie das Flag "--table" wie folgt verwenden:
Dadurch wird der Inhalt der Methode
up
unddown
automatisch hinzugefügt :In ähnlicher Weise können Sie die
--create["table_name"]
Option beim Erstellen neuer Migrationen verwenden, um Ihren Migrationen mehr Boilerplate hinzuzufügen. Kleiner Punkt, aber hilfreich, wenn Sie viele davon machen!quelle
Blueprint
wurde in Laravel 5.1 hinzugefügt. Nur ein Punkt der Klarstellung ist alles.Wenn Sie Laravel 5 verwenden, lautet der Befehl:
Alle Befehle zum Erstellen von Dingen (Controller, Modelle, Migrationen usw.) wurden unter dem
make:
Befehl verschoben .php artisan migrate
ist immer noch das gleiche.quelle
Laravel 5.6 und höher
für den Fall, dass Sie einer vorhandenen Tabelle eine neue Spalte als AUSLÄNDISCHEN SCHLÜSSEL hinzufügen möchten.
Erstellen Sie eine neue Migration, indem Sie den folgenden Befehl ausführen: make: migration
Beispiel:
Im Ordner Datenbank / Migrationen haben Sie eine neue Migrationsdatei, etwa:
2018_08_08_093431_add_store_id_to_users_table.php (siehe Kommentare)
Führen Sie danach den folgenden Befehl aus:
Wenn Sie die letzte Migration aus irgendeinem Grund rückgängig machen möchten, führen Sie den folgenden Befehl aus:
Weitere Informationen zu Migrationen finden Sie in den Dokumenten
quelle
Sie können der ursprünglichen
Schema::create
Methode wie folgt neue Spalten hinzufügen :Wenn Sie bereits eine Tabelle erstellt haben, können Sie dieser Tabelle zusätzliche Spalten hinzufügen, indem Sie eine neue Migration erstellen und die folgende
Schema::table
Methode verwenden:Die Dokumentation ist diesbezüglich ziemlich gründlich und hat sich von Version 3 zu Version 4 nicht allzu sehr geändert .
quelle
create_users_table
, wenn ich Spalten hinzufüge :add_email_password_columns_to_users
.add_
Verb " " vor jeder Datei zu verwenden, um Änderungen zu verfolgen. Auf diese Weise ist es einfacher, Änderungen für die Versionskontrolle usw. zu verfolgen, da für jede Iteration eine neue Add-Datei erstellt wird. Wenn Sie einfach das "create_
" weiter modifizieren würden, wäre es schwer zu wissen, dass x Mitarbeiter etwas durcheinander gebracht hat, indem er einen Index entfernt oder eine neue Spalte usw. usw. hinzugefügt hat. Zumindest macht das in meinem Kopf Sinn! :)Sie können einfach Ihre vorhandene Migrationsdatei ändern, indem Sie beispielsweise eine Spalte in Ihre Tabelle einfügen und dann in Ihr Terminal Folgendes eingeben:
quelle
Dieses Ding wird auf Laravel 5.1 bearbeitet.
Führen Sie zuerst auf Ihrem Terminal diesen Code aus
Gehen Sie danach in Ihr Projektverzeichnis und erweitern Sie die Verzeichnisdatenbank - Migration und bearbeiten Sie die Datei add_paid_to_users.php. Fügen Sie diesen Code hinzu
Danach kehren Sie zu Ihrem Terminal zurück und führen diesen Befehl aus
Ich hoffe das hilft.
quelle
Setzen Sie zuerst Ihre vorherige Migration zurück
Danach können Sie Ihre vorhandene Migrationsdatei ändern (neue Spalten hinzufügen, umbenennen oder löschen) und anschließend Ihre Migrationsdatei erneut ausführen
quelle
Obwohl eine Migrationsdatei, wie bereits erwähnt, eine bewährte Methode ist, können Sie zur Not auch eine Spalte mit Basteln hinzufügen.
Hier ist ein Beispiel für einen Einzeiler für das Terminal:
(Hier ist es zur besseren Lesbarkeit formatiert)
quelle