Laravel

How to add new column in laravel migration without losing data

Ravindra Kumar

To add a new column in a Laravel migration without losing existing data, you can create a new migration file that alters the existing table. Laravel makes this easy using the php artisan make:migration command with the --table option.

Step-by-Step Guide:

You can generate a new migration

php artisan make:migration add_column_name_to_your_table_name_table --table=your_table_name

Replace column_name with your desired column, and your_table_name with the existing table.

You can edit the new migration file

Go to the newly created file in database/migrations/ and add the new column in the up() method.

public function up()
{
    Schema::table('your_table_name', function (Blueprint $table) {
        $table->string('new_column')->nullable(); // or you can define your data type here
    });
}

public function down()
{
    Schema::table('your_table_name', function (Blueprint $table) {
        $table->dropColumn('new_column');
    });
}

You can use Use ->nullable() if you want to avoid errors when adding the column to a table that already has data.

Don’t use ->default() unless you want to assign a default value.

Run the migration

php artisan migrate 

Notes:

This method preserves all existing data.

If the table has a lot of data and you’re on production, consider putting the site into maintenance mode first:

php artisan down
php artisan migrate
php artisan up

Example:
Adding a profile_picture column to the users table:

php artisan make:migration add_profile_picture_to_users_table --table=users 

Then, in the migration file:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('profile_picture')->nullable();
    });
}

Then:

php artisan migrate

Your data will be safe, and the column will be added!

Let me know if you want to add multiple columns or modify column types as well.

Ravindra Kumar

Ravindra is a passionate full stack developer and dedicated blogger with a flair for crafting user-friendly web applications and insightful articles. With expertise spanning front-end and back-end technologies, Ravindra brings ideas to life through innovative coding solutions.

Suggested Reading

How to Clear Cache in Laravel Without Using Artisan Commands

When working with Laravel, caching plays a key role in improving your application’s performance by storing compiled configurations, routes, views, and other data. However, during development or after making changes, you may need to clear the cache to see your latest updates. Usually, developers use Artisan commands like php artisan cache:clear or php artisan optimize:clear. […]

Upload (restore/import) a MySQL database backup via the command prompt (CLI)

To upload (restore/import) a MySQL database backup via the command prompt (CLI), you can use the mysql command-line utility. Here’s how: You must follow these requirement You must have a MySQL backup file (e.g., backup.sql) MySQL server should be installed and running You should have credentials for the MySQL user If you are working with […]

imagick php extension must be installed to use this driver in Laravel

It means that your Laravel app (or a package like Intervention Image, Spatie Media Library, or Laravel Snappy) is trying to use the Imagick image processing library, but it’s not installed or enabled on your server. If you’re using Ubuntu/Debian (Linux server): sudo apt-get update sudo apt-get install -y php-imagick sudo service apache2 restart # […]

Attempt to read property “id” on null in Laravel

The error message “Attempt to read property ‘id’ on null” in Laravel typically occurs when you’re trying to access the id property of an object that is null. This commonly happens when you’re expecting an object to be returned (such as a database record), but instead, null is returned. You can handle this null value […]

How to check first record in Laravel blade file

Here’s how to check the first iteration in a Blade @foreach loop: You can use Laravel’s built-in $loop variable: @foreach ($all_categories_ as $vals) <li class="nav-item" role="presentation"> <button class="nav-link p-3 border-0 text-start lh-sm w-100 rounded-0 fs-6 fw-medium {{ $loop->first ? 'active' : '' }}" id="pills-navTab{{ $vals->id }}-tab" data-bs-toggle="pill" data-bs-target="#pills-navTab{{ $vals->id }}" type="button" role="tab" aria-controls="pills-navTab{{ $vals->id }}" […]

How to convert String to Lower and Upper case in Laravel blade file

In a Laravel Blade file, you can convert a string to lowercase or uppercase using PHP functions directly in the Blade syntax. Convert to Lowercase Use the strtolower() function: {{ strtolower("Hello World") }} <!-- Output: hello world --> Convert to Uppercase Use the strtoupper() function: {{ strtoupper("Hello World") }} <!-- Output: HELLO WORLD --> Using […]