私は以下の列を持っています:
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');
});
}
私はstnkテーブルにシーダーを作成しました
次に、id
の名前をid_stnk
に変更します。
"composer"に"doctrine/dbal"を追加し、composer update
を実行しました。
php artisan migration:make rename_column
に移行しました。
次に、rename_columnに新しいメソッドを追加しました。
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
そして、コマンドphp artisan migrate
を実行しようとしましたが、次のようにエラーが発生しました。
[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)
別の移行ファイルを作成する必要があります-そして、そこに配置します:
走る
Laravel 4: php artisan migrate:make rename_stnk_column
Laravel 5: php artisan make:migration rename_stnk_column
次に、新しい移行ファイルの場所内:
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');
});
}
}
最初に行うことは、移行ファイルを作成することです。
コマンドラインに入力してください
php artisan make:migration rename_stk_column --table="YOUR TABLE" --create
ファイルを作成した後。 database/migrationsの下のアプリフォルダーに新しく作成された移行ファイルを開きます。
Upメソッドにこれを挿入します:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
}
そしてあなたのダウン方法で:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id_stnk', 'id);
});
}
その後、コマンドラインで単に入力します
php artisan migrate
それからすごい! idをid_stnkに変更しました。使用できるところで
php artisan migrate:rollback
変更を元に戻します。幸運を
列の名前を変更するには、スキーマビルダーのrenameColumnメソッドを使用できます。 *列の名前を変更する前に、必ず doctrine/dbal を追加してください= composer.jsonファイルへの依存。*
または、composerを使用してパッケージを単に要求することができます...
composer require doctrine/dbal
出典:https://laravel.com/docs/5.0/schema#renaming-columns
注:make:migrationではなくmigrate:makefor Laravel 5.x
答えがまったく機能しなかったので、ここに$ 0.02を投入しましたが、正しい道を送ってくれました。起こったことは、以前の外部制約がエラーを投げていたことでした。考えてみれば明らかです。
したがって、新しい移行のup
メソッドでは、最初にその元の制約を削除し、列の名前を変更してから、新しい列名で制約を再度追加します。 down
メソッドでは、正反対の操作を行うので、販売された設定に戻ります。
/**
* 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');
});
}
これが将来誰かを救うことを願っています!
列移行ファイルの名前を変更するには、それぞれ次の手順を実行します。
1-プロジェクトにDoctrine/dbalライブラリがあります。最初にコマンドを実行していない場合
composer require doctrine/dbal
2-古い移行ファイルを更新するための移行ファイルを作成します。警告(同じ名前が必要です)
php artisan make:migrate update_oldFileName_table
たとえば、古い移行ファイル名:create_users_table更新ファイル名はupdate_users_tableである必要があります
3-update_oldNameFile_table.php
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('from', 'to');
});
「from」私の古い列名と「to」私の新しい列名
4-最後にmigrateコマンドを実行します
php artisan migrate
ソースリンク:laravel document
上記の答えは素晴らしいか、それがあなたを傷つけないなら、移行をロールバックして名前を変更し、移行を再度実行してください。
php artisan migrate:rollback