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

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...

Document Laravel API With OpenAPI (Swagger)

Document Laravel API With OpenAPI (Swagger)

Swagger là gì? Swagger là một Ngôn ngữ mô tả giao diện để mô tả các API RESTful được thể hiện bằng JSON. Swagger được sử dụng cùng với một bộ công cụ phần mềm mã nguồn mở để thiết kế, xây dựng, l...

Laravel User Authentication

Laravel User Authentication

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng chức năng đăng nhập trong Laravel. Công bằng mà nói thì bạn có thể sử dụng Laravel UI hoặc JetStream để tự động tạo ra chức năng đăng nhập trong Lara...

Laravel UI Custom Email Password Reset Template

Laravel UI Custom Email Password Reset Template

Nếu bạn đang dùng thư viện laravel/ui để làm các chức năng liên quan đến authentication, và trong dự án của bạn, bạn cần thay đổi template email password reset thay vì sử dụng template email password...

Laravel Scout Full Text Search With Meilisearch

Laravel Scout Full Text Search With Meilisearch

Laravel Scout cung cấp một giải pháp đơn giản, dựa trên trình điều khiển để thêm tìm kiếm Full Text vào các mô hình Eloquent của bạn. Khi sử dụng Eloquent, Scout sẽ tự động giữ chỉ mục tìm kiếm của bạ...

Laravel Task Scheduling

Laravel Task Scheduling

Trong các ứng dụng lớn, bạn cần lên lịch định kì cho các công việc bằng Cron jobs.  Tại số một số thời điểm, việc quản lý các cron jobs trở nên cồng kềnh và khó khăn hơn. Laravel Scheduler là một côn...

Pipeline Design Pattern in Laravel

Pipeline Design Pattern in Laravel

Pipeline Design Pattern là nơi mà các dữ liệu được chuyển qua một chuỗi các nhiệm vụ hoặc giai đoạn. Pipeline hoạt động giống như một chuỗi dây chuyền lắp ráp, nơi dữ liệu được xử lý và sau đó, sẽ...

Laravel Many to Many Polymorphic Relationship

Laravel Many to Many Polymorphic Relationship

Many to many Polymorphic Relationship cũng hơi phức tạp để hiểu. Ví dụ: nếu bạn có bài post, video và tag, bạn cần kết nối với nhau theo yêu cầu là mọi bài đăng đều có nhiều tag và video cũng như vậy....

How to Install Laravel on CentOS 6/7

How to Install Laravel on CentOS 6/7

Laravel là một PHP Framework mã nguồn mở miễn phí, được phát triển bởi Taylor Otwell với phiên bản đầu tiên được ra mắt vào 6/2011. Laravel ra đời nhằm mục đích phát triển ứng dụng web dựa trên mô hìn...

ManhDanBlogs