Laravel 迁移更改表名
Posted
技术标签:
【中文标题】Laravel 迁移更改表名【英文标题】:Laravel Migration to change table name 【发布时间】:2016-02-26 14:17:43 【问题描述】:我想在Laravel中更改我的两个表名,所以我必须手动更改表名还是可以通过迁移来实现。
【问题讨论】:
来自文档:Schema::rename($from, $to); laravel.com/docs/5.1/migrations#renaming-and-dropping-tables 【参考方案1】:要更改表名,您可以这样做:
Schema::rename($currentTableName, $newTableName);
您可以使用drop
或dropIfExists
方法删除现有表:
Schema::drop('users');
Schema::dropIfExists('users');
只需将其添加到迁移中即可。
【讨论】:
这还会重命名/更改控制器/模型吗? > 这也会重命名/更改控制器/模型吗?没有。【参考方案2】:你可以这样重命名表格
Schema::rename('old_table', 'new_table');
但是如果您有foreign keys
、indexes
和unique-s
,请小心。
重命名后将无法删除它们,例如 thiat
Schema::table('new_table', function (Blueprint $table)
$table->dropForeign(['transaction_id']);
);
因为它们会有旧名称,而这些名称中包含表名。
因此,我建议先删除foreign keys
和其他内容
Schema::table('old_table', function (Blueprint $table)
$table->dropForeign(['transaction_id']);
);
Schema::rename('old_table', 'new_table');
Schema::table('new_table', function (Blueprint $table)
$table->foreign('transaction_id')->references('id')->on('transactions');
);
【讨论】:
外键+1。我认为这同样适用于索引,因为它们也由 Laravel 自动命名(如果你不指定名称)。 是的,索引将是我提到的“其他东西”。【参考方案3】:首先,使用 CLI 命令创建迁移:
php artisan make:migration rename_table
现在,在新迁移类的 up 方法中,使用 rename 方法更改表名:
Schema::rename('old_table_name', 'new_table_name');
接下来,执行迁移命令:
php artisan migrate
【讨论】:
【参考方案4】:要重命名现有的数据库表,请使用 rename 方法:
Schema::rename($from, $to);
要删除现有表,您可以使用 drop 或 dropIfExists
方法:
Schema::drop('users');
Schema::dropIfExists('users');
【讨论】:
【参考方案5】:首先,在你的终端中运行这个来创建一个迁移文件来重命名一个表:
php artisan make:migration rename_old_name_to_new_name_table
那么在 up 方法中,你应该有这个:
public function up()
Schema::rename('old_table_name', 'new_table_name');
然后在 down 方法中,你应该有这个,以防你想恢复以前所做的更改:
public function down()
Schema::rename('new_table_name', 'old_table_name');
【讨论】:
以上是关于Laravel 迁移更改表名的主要内容,如果未能解决你的问题,请参考以下文章