Laravel Migration to change table name

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.


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