Changing table columns with migration in Laravel 5 or above

Recently I have started working on a Laravel project and playing with migration for the first time and realized that managing the database with migration, it very easy to handle. In this tutorial, I will explain how to create the migration and how to change columns type.

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Let’s create a games table with the migration, so first open your terminal and navigate to your project directory and hit below command:

php artisan make:migration create_games_table

The new migration will be placed in your database/migrations directory. Now open your games migration file and add Schema to your up method:

Schema::create('games', function (Blueprint $table) {
    $table->integer('id', '11')->increments();
    $table->integer('game_id')->nullable();
    $table->integer('title')->nullable();
    $table->string('color')->nullable();
    $table->string('long_title')->nullable();
    $table->string('square_image')->nullable();
    $table->string('circle_image')->nullable();
    $table->string('rectangle_image')->nullable();
    $table->dateTimeTz('created_at')->nullable();
    $table->dateTime('updated_at')->nullable();
    $table->dateTime('deleted_at')->nullable();
});

Run migration command to generate your games table:

php artisan migrate

Now after creating a table, I realized that I have done a mistake in the title field and I used the title as an integer type and it must have string type so now what to do. Well, it’s very easy to replace the type with the migration.

Create a new migration and add Schema to your up method:

Schema::table('games', function($table)
{
    $table->string('title')->change();
});

You just need to add change() function at the end of the chain and it will correct your type.

If you are getting below error after running migration don’t afraid.

[RuntimeException]                                                                   
Changing columns for table "games" requires Doctrine DBAL; install "doctrine/dbal".

You must install doctrine/dbal so type composer require doctrine/dbal in your terminal.

Happy Coding 😉

Author: Manan Patel

Freelancer + Passionate web developer focused on backend and frontend development.

Leave a Reply