Ngoài các lệnh command mặc định của Laravel được cung cấp bởi Artisan, có rất nhiều tác vụ trong ứng dụng Laravel của bạn có thể được xử lý rất tốt bằng các lệnh command này. Nhưng đôi khi có nhiều tác vụ riêng chỉ dành cho riêng cho một dự án. Vì vậy, trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách để tạo ra một lệnh command mang một tính chất đặc thù như vậy.

Chúng ta sẽ làm một lệnh command đơn giản đó thêm data giả vào bảng users. Còn chần chừ gì nữa, mà không bắt đầu thực hiện ngay nào.

Đầu tiên, chúng ta một file command có tên là CreateUsers bằng lệnh command sau:

php artisan make:command CreateUsers 

Sau khi, lệnh command trên chạy xong, nó sẽ tạo ra một file mới là CreateUsers.php nằm trong thư mục app/Console/Commands.

Tiếp theo, chúng ta sẽ đăng kí lệnh command trên, bạn hãy mở file app/console/Kernel.php và thêm command trên vào mảng $commands như sau:

/**
 * The Artisan commands provided by your application.
 *
 * @var array
 */
protected $commands = [
    'App\Console\Commands\CreateUsers'
];

Sau đó, bạn hãy mở file CreateUsers.php nằm trong thư mục app/Console/Commands và chỉnh sửa lại như sau:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create user - ManhDanBlogs';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        \App\Models\User::factory(10)->create();
    }
}

Bây giờ, bạn hãy chạy lệnh command sau để kiểm tra xem lệnh command chúng ta vừa mới tạo đã được đăng kí hay chưa:

php artisan list

Bạn có thể thấy lệnh command của chúng ta đã đăng ký mới.

Để chạy được lệnh command của chúng ta, bạn chỉ cần gõ php artisan + $signature mà bạn đã đăng kí trước đó, cụ thể như sau:

php artisan user:create

Sau khi lệnh command trên chạy xong, thì trong bảng users của bạn sẽ có thêm 10 user.

Làm tới đây, sẽ có nhiều bạn suy nghĩ, chẳng lẽ mình muốn tạo 20 user thì phải chạy 2 lần sao, vậy có cách nào có thể giúp mình tạo user với số lượng tùy chỉnh không?

Không sao, điều đó vẫn có thực hiện được bằng cách sử dụng arguments, bạn cần chỉnh lại giá trị của $signature như sau:

/**
 * The name and signature of the console command.
 *
 * @var string
 */
protected $signature = 'user:create {number}';

Tiếp theo, bạn cần chỉnh lại hàm handle như sau:

/**
 * Execute the console command.
 *
 * @return int
 */
public function handle()
{        
    \App\Models\User::factory($this->argument('number'))->create();
}

Sau đó, bạn sẽ chạy lệnh command như sau:

php artisan user:create 2

với số 2 là số lượng user mà bạn muốn lệnh command tạo cho chúng ta.

Nếu bạn, không muốn sử dụng arguments thì bạn có thể sử dụng Options.

Để sử dụng options đầu tiên, bạn cần chỉnh giá trị $signature như sau:

/**
 * The name and signature of the console command.
 *
 * @var string
 */
protected $signature = 'user:create {--number=}';

Tiếp theo, bạn cần chỉnh lại hàm handle như sau:

/**
 * Execute the console command.
 *
 * @return int
 */
public function handle()
{        
    \App\Models\User::factory($this->option('number'))->create();
}

Sau đó, bạn sẽ chạy lệnh command như sau:

php artisan user:create --number=2

Ngoài arguments và options thì vẫn còn nhiều thứ khác nữa, bạn có thể tham khảo ở https://laravel.com/docs/8.x/artisan.

Tôi đã hướng dẫn có bạn về cách tạo ra một lệnh command dành riêng cho các dự án khác nhau, tôi hy vọng bạn thích hướng dẫn này. Nếu bạn có bất kỳ câu hỏi nào hãy liên hệ với chúng tôi qua trang contact. Cảm ơn bạn.

CÓ THỂ BẠN QUAN TÂM

Integrating AI Assistant with CKEditor 5 in Laravel using Vite

Integrating AI Assistant with CKEditor 5 in Laravel using Vite

OpenAI OpenAI là một công ty nghiên cứu và triển khai trí tuệ nhân tạo, nổi tiếng với việc phát triển các mô hình AI tiên tiến. Mục tiêu của OpenAI là đảm bảo rằng trí tuệ nhân tạo tổng quát (AGI...

How To Optimize Your Site With GZIP Compression

How To Optimize Your Site With GZIP Compression

GZIP là công nghệ nén thường được sử dụng để truyền dữ liệu một cách nhanh chóng qua Insternet. Hiện nay, GZIP là một tiêu chuẩn để nén các file trên trang web, đa số các website hiện nay hơn 99% sử d...

Integrating TinyMCE in Laravel 10 using Vite

Integrating TinyMCE in Laravel 10 using Vite

TinyMCE TinyMCE là một trình soạn thảo WYSIWYG được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép MIT bởi Tiny Technologies Inc. TinyMCE cho phép ngư...

Integrating Google Gemini AI in Laravel

Integrating Google Gemini AI in Laravel

Google Gemini Gemini là một mô hình trí tuệ nhân tạo mới mạnh mẽ từ Google không chỉ có khả năng hiểu văn bản mà còn có thể hiểu cả hình ảnh, video và âm thanh. Gemini là một mô hình đa phương ti...

Laravel Mail Sending Redirector Listener

Laravel Mail Sending Redirector Listener

Trong quá trình phát triển web, việc gửi email là một chức năng quan trọng để thông báo, đặt lại mật khẩu, hoặc tương tác với người dùng. Tuy nhiên, khi chúng ta đang trong quá trình phát triển, vi...

Laravel Jobs Batching

Laravel Jobs Batching

Phiên bản Laravel 8 đã được phát hành với một tính năng mà rất nhiều người trong chúng ta đã chờ đợi rất lâu đó là Jobs Batching, nó cho phép chúng ta thực hiện nhiều công việc trong cùng một lúc và t...

Laravel customize your API Versioning Route File

Laravel customize your API Versioning Route File

Trong khuôn khổ của Laravel, các route của api được tách thành một file duy nhất, đó là file api.php nằm trong thư mục routes . Nếu chúng ta muốn thêm version vào route api thì chúng ta sẽ làm như...

Export CSV from SQL Server - Import into MySQL with Laravel

Export CSV from SQL Server - Import into MySQL with Laravel

Transfer Database Trong quá trình phát triển và bảo trì dự án, việc di chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác là một nhiệm vụ khá phổ biến. Giả sử bạn cần di chuyển dữ liệu từ SQ...

Google Drive as Filesystem in Laravel

Google Drive as Filesystem in Laravel

Đối với một số dự án, bạn cần phải sử dụng Google Drive (với tài khoản @gmail.com cá nhân hoặc tài khoản G Suite) làm nhà cung cấp bộ nhớ trong các dự án Laravel. Trong bài đăng này, tôi sẽ hướng d...

ManhDanBlogs