Laravel Migration to change table name

LaravelLaravel 5

Laravel Problem Overview


I want to change my two table name in the Laravel, so do I have to manually change the table name or it can be possible through migration.

Laravel Solutions


Solution 1 - Laravel

To change a table name, you can do this:

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

You can use the drop or dropIfExists methods to remove an existing table:

Schema::drop('users');

Schema::dropIfExists('users');

Just add that to a migration and it should work.

Solution 2 - Laravel

You can rename table like that

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

BUT be careful if you have foreign keys, indexes and unique-s.

you will not be able to deleted them after renaming, like thiat

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

because they will have old names and these names have table name in them.

Thus, I recommend deleting foreign keys and other stuff first

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

Solution 3 - Laravel

Firstly, use CLI command to create a migration:

php artisan make:migration rename_table

Now, in the up method of the new migration class, use the rename method to change table name:

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

Next, execute the migration command:

php artisan migrate

Solution 4 - Laravel

To rename an existing database table, use the rename method:

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

To drop an existing table, you may use the drop or dropIfExists methods:

Schema::drop('users');

Schema::dropIfExists('users');

Solution 5 - Laravel

Firstly, run this in your terminal to create a migration file to rename a table:

php artisan make:migration rename_old_name_to_new_name_table

Then in the up method, you should have this:

public function up()
{
    Schema::rename('old_table_name', 'new_table_name');
}

Then in the down method, you should have this in case you want to revert previous changes made:

public function down()
{
    Schema::rename('new_table_name', 'old_table_name');
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHKumarView Question on Stackoverflow
Solution 1 - LaravelGWedView Answer on Stackoverflow
Solution 2 - LaravelYevgeniy AfanasyevView Answer on Stackoverflow
Solution 3 - LaravelSaurabh KatariaView Answer on Stackoverflow
Solution 4 - LaravelNikunj K.View Answer on Stackoverflow
Solution 5 - LaravelBanjoko KazeemView Answer on Stackoverflow