Laravel迁移以更改表名

kdfy810k  于 2022-11-26  发布在  其他
关注(0)|答案(5)|浏览(198)

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

btqmn9zl

btqmn9zl1#

来自文档laravel.com/docs/5.1/migrations#renaming-and-dropping-tables
要更改表名,可以执行以下操作:

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

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

  1. Schema::drop('users');
  2. Schema::dropIfExists('users');

只要将其添加到迁移中,它就应该工作。

rqqzpn5f

rqqzpn5f2#

您可以这样重命名表

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

但是如果您有foreign keysindexesunique-s,请小心。

重命名后将无法删除它们,就像这样

  1. Schema::table('new_table', function (Blueprint $table) {
  2. $table->dropForeign(['transaction_id']);
  3. });

因为它们将具有较旧名称,且这些名称中包含表名。
因此,我建议先删除foreign keys和其他东西

  1. Schema::table('old_table', function (Blueprint $table) {
  2. $table->dropForeign(['transaction_id']);
  3. });
  4. Schema::rename('old_table', 'new_table');
  5. Schema::table('new_table', function (Blueprint $table) {
  6. $table->foreign('transaction_id')->references('id')->on('transactions');
  7. });
展开查看全部
gr8qqesn

gr8qqesn3#

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

  1. php artisan make:migration rename_table

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

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

接下来,执行迁移命令:

  1. php artisan migrate
i7uq4tfw

i7uq4tfw4#

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

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

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

  1. Schema::drop('users');
  2. Schema::dropIfExists('users');
niwlg2el

niwlg2el5#

首先,在终端中运行以下命令,创建迁移文件以重命名表:

  1. php artisan make:migration rename_old_name_to_new_name_table

那么在up方法中,你应该有这样的:

  1. public function up()
  2. {
  3. Schema::rename('old_table_name', 'new_table_name');
  4. }

那么在down方法中,如果你想恢复以前所做的更改,你应该有这个:

  1. public function down()
  2. {
  3. Schema::rename('new_table_name', 'old_table_name');
  4. }
展开查看全部

相关问题