it-swarm.com.de

Laravel 5.4 Spezifische Tabellenmigration

Hallo, lesen Sie die gesamte Dokumentation hier in https://laravel.com/docs/5.4/migrations .

Gibt es eine Möglichkeit, wie eine bestimmte Migrationsdatei migriert werden kann (nur eine Migration), weil jetzt bei jeder Änderung php artisan migrate:refresh verwendet wird und alle Felder zurückgesetzt werden.

17
Martney Acha

Als erstes sollten Sie eine migration-Datei für Ihre Tabelle erstellen:

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

Nachdem Sie den Ordner test im Ordner migrations erstellt haben, wurde der neu erstellte Ordner migration im Ordner test verschoben/kopiert und unter dem Befehl terminal/cmd wie folgt ausgeführt:

php artisan migrate --path=/database/migrations/test/

Schauen Sie sich die Tabelle migrations in Ihrer Datenbank an. Es wird eine Liste mit dem Namen der Migrationsdatei und dem Wert der Chargennummer angezeigt.

Angenommen, Sie haben folgende Struktur:

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

Wenn Sie nur die Migration von 2016_09_07_103432_create_tabel_roles rückgängig machen möchten, ändern Sie Den Migrationsbatchwert auf 2, was unter allen am höchsten ist, und führen Sie ihn anschließend aus.

php artisan migrate:rollback

Hier wird nur eine Tabelle mit dem Chargenwert 2 zurückgesetzt. Nehmen Sie nun Änderungen an dieser Tabelle vor und führen Sie den folgenden Konsolenbefehl aus.

php artisan migrate

Der Stapelwert in der Tabelle migrations definiert die Reihenfolge der Migrationen. Wenn Sie ein Rollback durchführen, werden Migrationen, die den neuesten Stand haben oder den höchsten Stapelwert aufweisen, zuerst und dann andere zurückgesetzt. Sie können also den Wert in der Datenbank ändern und dann eine bestimmte Migrationsdatei zurücksetzen.

Obwohl es nicht ratsam ist, die Chargennummer aufgrund der Beziehung zwischen der Tabellenstruktur jedes Mal zu ändern, können Sie diesen Fall für einige Fälle verwenden, in denen das Rollback einzelner Tabellen die Integrität zwischen den Tabellen nicht verletzt.

Ich hoffe du verstehst.

36
Sagar Gautam

sie sollten den Pfad zu Ihrer Migrationsdatei hinzufügen, um nur diese Tabelle zu aktualisieren und auszuführen

php artisan migrate:refresh --path=/database/migrations/fileName.php
15
Wissem SASSI

Ich wollte nur eine andere Lösung posten, die ich erwähnenswert finde.

  1. Suchen Sie die Zeile mit Ihrem Migrationsnamen in der Migrationstabelle und LÖSCHEN Sie sie. Es sollte so aussehen: 2016_06_01_000001_create_oauth_auth_codes_table
  2. Entfernen Sie Ihre Tabelle aus der Datenbank, z. DROP TABLE oauth_auth_codes
  3. Führen Sie PHP Handwerker migrieren aus

Es migriert nur die Tabelle, die Sie benötigen, und berührt nichts anderes

4
tylik

Sie müssen die Datei (en) in einem neuen Verzeichnis ablegen (zB: ausgewählt) und dann anwenden

php artisan migrate  --path=/database/migrations/selected

wenn Sie ein Rollback benötigen:

php artisan migrate:rollback  --path=/database/migrations/selected

Hinweis:

php artisan migrate:refresh

dadurch werden alle Migrationsdateien im Standardverzeichnis (/ database/migrations) rückgängig gemacht und migriert.

3
Ahmad Zahabi

Sie können nur ein Rollback ausführen:

php artisan migrate:rollback

https://laravel.com/docs/5.4/migrations#rolling-back-migrations

Sie können angeben, wie viele Migrationen mithilfe der Option "Schritt" zurückgesetzt werden sollen:

php artisan migrate:rollback --step=1

Einige Tricks gibt es hier:

Rollback einer bestimmten Migration in Laravel

3
Jed

Löschen Sie die Tabelle und entfernen Sie ihren Datensatz aus der Migrationstabelle.

Danach führen Sie einfach die Migration erneut aus: 

php artisan migrate
2
sskoko

Sie können den Namen der Migrationsdatei einfach aus Ihrer Datenbank in der Tabelle "migrations" löschen und dann Folgendes ausführen: php artitsan migration

2
Lasha Shonia

Korrektur - Schrägstrich vor der Datenbank entfernen

$ php artisan migrate --path=database/migrations/migration.php
2
TCruz
php artisan help migrate

Sie sehen die Option:

--path [= PATH] Der Pfad zu den Migrationsdateien, die ausgeführt werden sollen

Übrigens können Sie wahrscheinlich den Stammordner der zu migrierenden Datei angeben:

php artisan migrate --path=/database/migrations/sample.php

Sie können auch einen neuen Ordner in Migrationen erstellen und anschließend alle darin enthaltenen Migrationsdateien migrieren:

php artisan migrate --path=/database/migrations/new_folder
2

Sie können versuchen, die Option --path = zu verwenden, um den bestimmten Unterordner zu definieren, den Sie ausführen möchten, und dort bestimmte Migrationen abzulegen.

Alternativ müssen Sie Verweise und Tabellen aus den DB- und Migrations-Tabellen entfernen, was nicht ideal ist: /

1
Chris WB

Wenn Sie eine weitere Tabelle erstellen möchten, erstellen Sie einfach eine neue Migrationsdatei. Es wird funktionieren.

Wenn Sie eine Migration mit dem Namen users_table mit id, first_name, last_name erstellen. Sie können eine Migrationsdatei wie erstellen

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

Wenn Sie ein anderes Feld wie "Status" hinzufügen möchten, ohne es zu migrieren: Aktualisieren. Sie können eine andere Migrationsdatei wie "add_status_filed_to_users_table" erstellen.

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

Und vergessen Sie nicht, die Rollback-Option hinzuzufügen:

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

Wenn Sie die Migration mit php artitsan migration ausführen, migrieren Sie einfach die neue Migrationsdatei.

Wenn Sie jedoch den "status" in die erste Bearbeitungsdatei (users_table) eintragen und die Migration ausführen. Es ist nichts zu migrieren. Sie müssen php artisan migrate:refresh ausführen.

Ich hoffe das hilft.

1
Nguyen Hoang

Sie können dies verwenden.

-> https://packagist.org/packages/sayeed/custom-migrate

-> https://github.com/nilpahar/custom-migration/

das ist sehr einfach zu bedienen

0
Hasan