509 Stimmen

Laravel Fügen Sie in einer Migration einer vorhandenen Tabelle eine neue Spalte hinzu.

Ich kann nicht herausfinden, wie ich mithilfe des Laravel-Frameworks eine neue Spalte zu meiner vorhandenen Datenbanktabelle hinzufügen kann.

Ich habe versucht, die Migrationsdatei zu bearbeiten...

integer("paid");
    });
}

Im Terminal führe ich php artisan migrate:install und migrate aus.

Wie füge ich neue Spalten hinzu?

1136voto

Phill Sparks Punkte 19800

Um eine Migration zu erstellen, können Sie den migrate:make-Befehl auf der Artisan CLI verwenden. Verwenden Sie einen spezifischen Namen, um Konflikte mit vorhandenen Modellen zu vermeiden

für Laravel 5+:

php artisan make:migration add_paid_to_users_table --table=users

für Laravel 3:

php artisan migrate:make add_paid_to_users

Dann müssen Sie die Schema::table() Methode verwenden (da Sie auf eine vorhandene Tabelle zugreifen, nicht eine neue erstellen). Und Sie können eine Spalte wie folgt hinzufügen:

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

und vergessen Sie nicht die Rollback-Option hinzuzufügen:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

Dann können Sie Ihre Migrationen ausführen:

php artisan migrate

Dies ist alles gut dokumentiert sowohl in Laravel 4 / Laravel 5:

Und für Laravel 3:

Bearbeiten:

Verwenden Sie $table->integer('paid')->after('whichever_column');, um dieses Feld nach einer bestimmten Spalte hinzuzufügen. nur für MySQL anwendbar

88voto

chebaby Punkte 6414

Falls Sie eine neue Spalte als Fremdschlüssel zu einer vorhandenen Tabelle hinzufügen möchten.

Erstellen Sie eine neue Migration, indem Sie diesen Befehl ausführen: make:migration

Beispiel :

php artisan make:migration add_store_id_to_users_table --table=users

In dem Ordner database/migrations haben Sie eine neue Migrationsdatei, etwas wie :

2018_08_08_093431_add_store_id_to_users_table.php (siehe die Kommentare)

integer('store_id')->unsigned()->nullable()->after('password');

            // 2. Erstelle Fremdschlüssel-Beschränkungen
            $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
        });
    }

    /**
     * Hebe die Migrationen auf.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Fremdschlüssel-Beschränkungen entfernen
            $table->dropForeign(['store_id']);

            // 2. Entferne die Spalte
            $table->dropColumn('store_id');
        });
    }
}

Führen Sie danach den Befehl aus :

php artisan migrate

Falls Sie die letzte Migration aus irgendeinem Grund rückgängig machen möchten, führen Sie diesen Befehl aus :

php artisan migrate:rollback

Weitere Informationen zu Migrationen finden Sie in der Dokumentation

82voto

camelCase Punkte 5430

Ich werde mich zu mike3875's Antwort für zukünftige Leser hinzufügen, die Laravel 5.1 und höher verwenden.

Um die Dinge schneller zu machen, können Sie das Flag "--table" wie folgt verwenden:

php artisan make:migration add_paid_to_users --table="users"

Dadurch werden automatisch der Inhalt der up und down Methode hinzugefügt:

/**
 * Führe die Migrationen aus.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //
    });
}

Ebenso können Sie die Option --create["table_name"] verwenden, wenn Sie neue Migrationen erstellen, die mehr Boilerplate zu Ihren Migrationen hinzufügen. Klein, aber hilfreich, wenn Sie viele davon machen!

30voto

mikelovelyuk Punkte 3982

Wenn Sie Laravel 5 verwenden, lautet der Befehl:

php artisan make:migration add_paid_to_users

Alle Befehle zum Erstellen von Dingen (Controller, Modelle, Migrationen usw.) wurden unter dem Befehl make: verschoben.

php artisan migrate bleibt jedoch gleich.

27voto

Shaarif Mehmood Punkte 261

In Laravel 8

php artisan make:migration add_columnname_to_tablename_table --table=tablename

then after creating migration in

public function up()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Create new column
            $table->datatype('column_name')->nullable();
        });
    }
public function down()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Create new column
            $table->dropColumn('column_name');
        });
    }

then run

php artisan migrate

if you face error then rename the migration name with the date before the table created and then run again php artisan migrate

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X