it-swarm.com.de

Wie kann ich die Spalte in laravel mithilfe der Migration umbenennen?

Ich habe Spalten wie unten erwähnt:

public function up()
{
    Schema::create('stnk', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('no_reg', 50)->unique();
        $table->string('no_bpkb', 50)->unique();
        $table->string('nama_pemilik', 100);
        $table->string('alamat');
        $table->string('merk', 50);
        $table->string('tipe', 50);
        $table->string('jenis', 50);
        $table->smallInteger('tahun_pembuatan');
        $table->smallInteger('tahun_registrasi');
        $table->smallInteger('isi_silinder');
        $table->string('no_rangka', 50);
        $table->string('no_mesin', 50);
        $table->string('warna', 50);
        $table->string('bahan_bakar', 50);
        $table->string('warna_tnkb', 50);
        $table->string('kode_lokasi', 50);
        $table->date('berlaku_sampai');
        $table->timestamps();

        $table->index('created_at');
        $table->index('updated_at');
    });

}

Ich habe die Sämaschine zum Stnktisch gemacht

Jetzt möchte ich id in id_stnk Umbenennen.
Ich habe ein "doctrine/dbal" in das "composer" eingefügt und mache einen composer update.

Ich habe eine Migration durchgeführt php artisan migration:make rename_column.
Dann habe ich eine neue Methode hinzugefügt, um die Spalte umzubenennen:

Schema::table('stnk', function(Blueprint $table)
{
    $table->renameColumn('id', 'id_stnk');

});

Und dann habe ich versucht, Befehl php artisan migrate Auszuführen, aber ich habe Fehler wie unten erwähnt:

[Ulluminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150) (SQL: ALTER TABLE stnk CHANGE id id_stnk INT UNSIGENED AUTO_INCREMENT NOT NULL)

[PDOException]
SQLSTATE[HY000]: General error: 1025  Error on rename  of './my_database/#sql -447_33' to './my_database/stnk' (error: 150)
57
Ariasa

Sie müssen eine weitere Migrationsdatei erstellen und dort ablegen:

Lauf

Laravel 4:    php artisan migrate:make rename_stnk_column
Laravel 5:    php artisan make:migration rename_stnk_column

Dann in der neuen Migrationsdatei platzieren:

class RenameStnkColumn extends Migration
{

    public function up()
    {
        Schema::table('stnk', function(Blueprint $table) {
            $table->renameColumn('id', 'id_stnk');
        });
    }


    public function down()
    {
        Schema::table('stnk', function(Blueprint $table) {
            $table->renameColumn('id_stnk', 'id');
        });
    }

}
81
Laurence

als erstes möchten Sie Ihre Migrationsdatei erstellen.

Geben Sie Ihre Befehlszeile ein

php artisan make:migration rename_stk_column --table="YOUR TABLE" --create

Nach dem Erstellen der Datei. Öffnen Sie die neu erstellte Migrationsdatei in Ihrem App-Ordner unter Datenbank/Migrationen.

Fügen Sie in Ihre up-Methode Folgendes ein:

Schema::table('stnk', function(Blueprint $table)
    {
        $table->renameColumn('id', 'id_stnk');
    });
}

und in Ihrer Down-Methode:

    Schema::table('stnk', function(Blueprint $table)
    {
        $table->renameColumn('id_stnk', 'id);
    });
}

geben Sie dann in Ihrer Befehlszeile einfach Folgendes ein

php artisan migrate

Dann wollah! Sie haben die ID soeben in id_stnk umbenannt. Übrigens können Sie verwenden

php artisan migrate:rollback

um die Änderungen rückgängig zu machen. Viel Glück

18
webartisan

Spalten umbenennen (Laravel 5.x)

Um eine Spalte umzubenennen, können Sie die Methode renameColumn im Builder für Schema verwenden. * Fügen Sie vor dem Umbenennen einer Spalte unbedingt die Abhängigkeit doctrine/dbal hinzu Ihre composer.json-Datei. *

Oder Sie können das Paket einfach mit dem Composer anfordern ...

composer require doctrine/dbal

Quelle: https://laravel.com/docs/5.0/schema#renaming-columns

Hinweis: Verwenden Sie make: migration und nicht migrate: make for Laravel 5.x

11
bmatovu

Ich warf meine 0,02 Dollar hier rein, da keine der Antworten funktionierte, aber mich auf den richtigen Weg geschickt hat. Was geschah, war, dass eine frühere ausländische Einschränkung den Fehler auslöste. Offensichtlich, wenn Sie darüber nachdenken.

Löschen Sie daher in der up -Methode Ihrer neuen Migration zuerst die ursprüngliche Einschränkung, benennen Sie die Spalte um und fügen Sie die Einschränkung erneut mit dem neuen Spaltennamen hinzu. In der down -Methode machen Sie genau das Gegenteil, damit es wieder zu der verkauften Einstellung zurückkehrt.

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('proxy4s', function (Blueprint $table) {
        // Drop it
        $table->dropForeign(['server_id']);

        // Rename
        $table->renameColumn('server_id', 'linux_server_id');

        // Add it
        $table->foreign('linux_server_id')->references('id')->on('linux_servers');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('proxy4s', function (Blueprint $table) {
        // Drop it
        $table->dropForeign(['linux_server_id']);

        // Rename
        $table->renameColumn('linux_server_id', 'server_id');

        // Add it
        $table->foreign('server_id')->references('id')->on('linux_servers');
    });
}

Ich hoffe, das spart jemandem in der Zukunft etwas Zeit!

7
Stan Smulders

Befolgen Sie diese Schritte, um die Spaltenmigrationsdatei umzubenennen.

1 - Gibt es eine Doctrine/Dbal-Bibliothek in Ihrem Projekt? Wenn Sie den Befehl noch nicht ausgeführt haben

composer require doctrine/dbal

2 - Update-Migrationsdatei für Update der alten Migrationsdatei erstellen. Warnung (muss den gleichen Namen haben)

php artisan make:migrate update_oldFileName_table

zum Beispiel sollte mein alter Migrationsdateiname: create_users_table update file name: update_users_table

3 - update_oldNameFile_table.php

Schema::table('users', function (Blueprint $table) {
$table->renameColumn('from', 'to');
});

'von' meinem alten Spaltennamen und 'zu' meinem neuen Spaltennamen

4 - Führen Sie abschließend den Befehl migrate aus

php artisan migrate

Quelllink: laravel document

7
melih sahin

Die obige Antwort ist großartig, oder wenn es Ihnen nicht schadet, setzen Sie die Migration einfach zurück und ändern Sie den Namen und führen Sie die Migration erneut aus.

 php artisan migrate:rollback
1
jay temp