Tech AI Insights

Laravel Commands and Custom Commands

Laravel Commands and Custom Commands

Laravel provides many built-in commands that help manage the application. These commands are run using Artisan, Laravel’s command-line tool. Some common commands include:

php artisan config:cache – Caches configuration files for better performance.
php artisan config:clear – Clears the cached configuration.
php artisan migrate – Runs database migrations.
php artisan route:list – Shows all registered routes.

Creating Your Own Commands

These commands are stored under the app/Console/Commands directory. Laravel also allows developers to create their own custom Artisan commands. You can create a command using:

Custom commands are useful when you want to update or modify anything inside the database.

For example, Suppose yourprojects table has a type column with five types:

  • software_development
  • marketing
  • personal
  • portfolio_websites
  • blogging

You want to treat portfolio_websites and blogging as personal, but keep the original values in the database.

For new entries, when saving data, if the type is portfolio_websites or blogging, set it as personal.

For existing records, you need a Laravel command to update the database.

You first create a new idea_type column. Then, ensure:

– If type is software_development or marketing, store the same value in idea_type.
– If type is portfolio_websites or blogging, store personal in idea_type.

This can be done with a custom Artisan command to update old records automatically.

You can create a Laravel command to update the existing records in the database accordingly.

first you run the make:command Artisan command:

php artisan make:command UpdateProjectIdeaTypeColumn

Command Structure

After generating your command, go inside the UpdateProjectIdeaTypeColumn file

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class UpdateProjectIdeaTypeColumn extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'update:project_idea_type';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Update the idea_type column in the projects table based on the type column.';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        DB::transaction(function () {
            // Update idea_type column based on the existing type column
            DB::table('projects')->update([
                'idea_type' => DB::raw("
                    CASE 
                        WHEN type = 'software_development' THEN 'software_development'
                        WHEN type = 'marketing' THEN 'marketing'
                        WHEN type IN ('portfolio_websites', 'blogging') THEN 'personal'
                        ELSE null
                    END
                ")
            ]);
        });

        $this->info('Project idea_type column updated successfully!');
    }
}

To run this command, you need to use the same name defined in the $signature property.

For example, if your signature is:

protected $signature = 'update:project_idea_type';

You can run the command using:

php artisan update:project_idea_type

Whatever name you set in $signature, you must use the same when running the command with php artisan.

Don’t forget to write a $description, as it will help you understand the purpose of the command in the future.

Scroll to Top