3

タイトルが言っていることとほとんど同じです。移行の一環として列名を変更する必要があります。

4

6 に答える 6

9

Laravel 3

はい、それは可能ですが、生のクエリでのみ可能です。一部のDBMSは列名の変更をサポートしていないため、一部のDBMSでは失敗するため、このような機能を実装しないことにしました。

DB::raw()したがって、移行内で生のクエリを活用できることを忘れないでください。そのように列名を変更できます。

Laravel 4

doctrine/dbalLaravel 4.1では、に依存関係として追加する必要がありますcomposer.json

"doctrine/dbal": "2.4.*"

実行すると、メソッドcomposer updateを使用できるようになります。renameColumn

Schema::table('users', function($table)
{
    $table->renameColumn('location', 'address');
});

これにより、location列の名前が次のように変更されますaddress.

于 2012-11-15T07:38:03.183 に答える
3

renameColumn() メソッドは、Laravel 4.1 ではデフォルトで使用できません。リリース ノートを参照してください。

移行で renameColumn 関数を使用している場合は、 doctrine/dbal 依存関係を composer.json ファイルに追加する必要があります。このパッケージはデフォルトで Laravel に含まれなくなりました。

http://laravel.com/docs/releases

于 2013-12-16T20:43:23.650 に答える
2

Laravel 4 の時点で、DB スキーマを介し​​て列の名前を変更できることに注意してください$table->renameColumn('from', 'to')

于 2013-07-26T20:59:06.177 に答える
1

renameColumn()Laravel 4の機能が修正されるまで(現在はThere is no column with nameエラーで失敗します)、次のようなものを使用できます。

Schema::table('table_name', function(Blueprint $table) {
    $table->string('new_name')->after('some_other_column_name');
});
DB::table('table_name')->update(array('new_name' => DB::raw('old_name')));
Schema::table('table_name', function(Blueprint $table) {
    $table->dropColumn('old_name');
});
于 2013-11-04T23:48:47.860 に答える
1

https://github.com/laravel/laravel/issues/2146によると、renameColumn は削除され、利用可能な修正はありません。

public function renameColumn($oldColumnName, $newColumnName) {
    throw new DBALException("Table#**renameColumn() was removed**, because it drops and recreates the column instead. **There is no fix available**, because a schema diff cannot reliably detect if a column was renamed or one column was created and another one dropped.");
}

Laravel 4.1 と doctrine/dbal 2.2 の場合、これは vendor/doctrine/dbal/UPGRADE にあります。

于 2014-04-29T21:57:13.377 に答える