Laravel Migration更改表名

时间:2015-11-24 08:22:54

标签: laravel laravel-5

我想在Laravel中更改我的两个表名,所以我必须手动更改表名,或者可以通过迁移来实现。

4 个答案:

答案 0 :(得分:72)

要更改表名,您可以执行以下操作:

Schema::rename($currentTableName, $newTableName);

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

Schema::drop('users');

Schema::dropIfExists('users');

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

答案 1 :(得分:8)

要重命名现有数据库表,请使用重命名方法:

Schema::rename($from, $to);

要删除现有表格,您可以使用drop或dropIfExists方法:

Schema::drop('users');

Schema::dropIfExists('users');

答案 2 :(得分: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');
 });

答案 3 :(得分:1)

首先,使用CLI命令创建迁移:

php artisan make:migration rename_table

现在,在新迁移类的up方法中,使用重命名方法更改表名称:

Schema::rename('old_table_name', 'new_table_name');

接下来,执行迁移命令:

php artisan migrate