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);

您可以使用dropdropIfExists 方法删除现有表:

Schema::drop('users');

Schema::dropIfExists('users');

只需将其添加到迁移中即可。

【讨论】:

这还会重命名/更改控制器/模型吗? > 这也会重命名/更改控制器/模型吗?没有。【参考方案2】:

你可以这样重命名表格

Schema::rename('old_table', 'new_table');

但是如果您有foreign keysindexesunique-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 迁移更改表名的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 模型查找旧表名

laravel5.6 使用迁移创建表

Laravel 8 - 更改现有迁移

更改 Laravel auth 表名和列名

laravel55的添加

在 laravel 中更改迁移值