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)
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');
});
}
}
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
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
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!
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
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