Yah*_*din 6 laravel laravel-5 laravel-5.1
我想重命名 Laravel 5 中的索引。
在之前的迁移中,为表创建了一个列,名称a如下:
$table->unsignedInteger('foo')->index('blah');
Run Code Online (Sandbox Code Playgroud)
我想重命名索引,以便它使用默认的 Laravel 表示法。
即我想将blah索引重命名为a_blah.
我知道如何重命名普通列,如下所示:
$table->renameColumn('from', 'to');
Run Code Online (Sandbox Code Playgroud)
但文档没有提到如何重命名索引。
我怎样才能做到这一点?
更新
看来 Laravel 本身并不支持这个。请对这个问题点赞:
Laravel 5.6现在支持重命名索引:
$table->renameIndex('from', 'to')
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/5.6/migrations#renaming-indexes
Laravel <= 5.5 的旧答案
正如 @KuKec 提到的,Laravel 似乎没有对重命名索引的本机支持。但您可以使用原始 SQL。例如在 MySQL 中它会像这样:
DB::statement('RENAME INDEX old_index TO new_index');
Run Code Online (Sandbox Code Playgroud)
这也可能比删除和重新索引更有效(尤其是在大型数据库上)。
我还为功能请求创建了一个问题,因此得到了更好的支持。请在这里投票:https://github.com/laravel/internals/issues/443
| 归档时间: |
|
| 查看次数: |
6234 次 |
| 最近记录: |