【发布时间】:2016-02-26 14:17:43
【问题描述】:
我想在Laravel中更改我的两个表名,所以我必须手动更改表名还是可以通过迁移来实现。
【问题讨论】:
-
来自文档:Schema::rename($from, $to); laravel.com/docs/5.1/migrations#renaming-and-dropping-tables
我想在Laravel中更改我的两个表名,所以我必须手动更改表名还是可以通过迁移来实现。
【问题讨论】:
要更改表名,您可以这样做:
Schema::rename($currentTableName, $newTableName);
您可以使用drop 或dropIfExists 方法删除现有表:
Schema::drop('users');
Schema::dropIfExists('users');
只需将其添加到迁移中即可。
【讨论】:
你可以这样重命名表格
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');
});
【讨论】:
首先,使用 CLI 命令创建迁移:
php artisan make:migration rename_table
现在,在新迁移类的 up 方法中,使用 rename 方法更改表名:
Schema::rename('old_table_name', 'new_table_name');
接下来,执行迁移命令:
php artisan migrate
【讨论】:
要重命名现有的数据库表,请使用 rename 方法:
Schema::rename($from, $to);
要删除现有表,您可以使用 drop 或 dropIfExists 方法:
Schema::drop('users');
Schema::dropIfExists('users');
【讨论】:
首先,在你的终端中运行这个来创建一个迁移文件来重命名一个表:
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');
}
【讨论】: