Laravel Migration to change table name
LaravelLaravel 5Laravel 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');
}