0
0
LaravelHow-ToBeginner · 3 min read

How to Drop Column Using Migration in Laravel

To drop a column in Laravel migration, use the Schema::table method with $table->dropColumn('column_name') inside the up method. Make sure to install the doctrine/dbal package for dropping columns as it is required for this operation.
📐

Syntax

Use Schema::table('table_name', function (Blueprint $table) { ... }) to modify an existing table. Inside the closure, call $table->dropColumn('column_name') to remove the column.

The up method applies the change, and the down method should restore the column for rollback.

php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class DropColumnFromTable extends Migration
{
    public function up()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->dropColumn('column_name');
        });
    }

    public function down()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->string('column_name'); // restore column with appropriate type
        });
    }
}
💻

Example

This example shows how to drop the age column from the users table using a migration. The down method adds the column back as a string.

php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class DropAgeColumnFromUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('age');
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('age');
        });
    }
}
Output
Migration runs successfully and the 'age' column is removed from 'users' table.
⚠️

Common Pitfalls

  • For dropping columns, Laravel requires the doctrine/dbal package. Forgetting to install it causes errors.
  • Trying to drop multiple columns without passing an array to dropColumn can cause issues.
  • Not defining the down method properly can break rollbacks.
php
<?php
// Wrong: dropping multiple columns without array
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('age', 'nickname'); // This will cause error
});

// Right: pass columns as array
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn(['age', 'nickname']);
});
📊

Quick Reference

ActionCode ExampleNotes
Drop single column$table->dropColumn('column_name');Use inside Schema::table closure
Drop multiple columns$table->dropColumn(['col1', 'col2']);Pass columns as array
Restore column$table->string('column_name');Use in down() method for rollback
Install dependencycomposer require doctrine/dbalRequired for dropColumn support

Key Takeaways

Use Schema::table with $table->dropColumn('column_name') to drop columns in migrations.
Install doctrine/dbal package before dropping columns to avoid errors.
Always define the down() method to restore dropped columns for safe rollbacks.
Pass multiple columns as an array to dropColumn when removing more than one.
Test migrations on a development database before applying to production.