2017-02-27 4 views
1

のインデックスがそうのようなaの名前名前を変更しますインデックスを使用して、既定のLaravel表記を使用します。は、私は列がテーブルのために作成された前回の移行ではLaravel 5.</p> <p>でインデックスの名前を変更したいLaravel 5

つまり、blahのインデックスをa_blahに変更します。

$table->renameColumn('from', 'to'); 

しかし、ドキュメントは、インデックスの名前を変更する方法を言及していない:

私はそうのように、通常の列の名前を変更する方法を知っています。

どうすればいいですか?

UPDATE

Laravelはネイティブでこれをサポートしていないようです。問題をupvoteしてください:

https://github.com/laravel/internals/issues/443

+2

私はLaravelがインデックスの名前を変更する方法をサポートしていないと思っています。古いインデックス 'blah'を削除し、希望の名前' a_blah'で新しいインデックスを作成する必要があります。 – KuKeC

答えて

0

あなたが最初にすべきである:そして

$table->dropIndex('your_full_name_index') 

私はLaravelはインデックスの名前を変更するための任意の方法をサポートしていない、あなたがドロップするべきだと思います

$table->index('new_index_name') 
+0

私はKuKecの答えを受け入れました。答えが最初にコメントだったからです。申し訳ありません –

2

を行います旧インデックスblah

$table->dropIndex('blah'); 

を入力し、希望の名前a_blahで新しいものを作成してください。

$table->index('foo', 'a_blah'); 
+0

Laravelはこれを非常に非効率的なのでネイティブにサポートしていません。機能要求をupvoteしてください:https://github.com/laravel/internals/issues/443 –

0

@KuKecが述べたように、Laravelはインデックスの名前変更をネイティブサポートしていないようです。しかし、生のSQLを使用することができます。 MySQLでは、例えば、それはそうのように次のようになります。

DB::statement('RENAME INDEX old_index TO new_index'); 

これも可能性が落下し、(特に大規模なデータベース上の)再インデックスよりも効率的です。

フィーチャーリクエストの問題も作成しましたので、これはよりよくサポートされています。 https://github.com/laravel/internals/issues/443

関連する問題