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

Laravel One to One Eloquent Relationship

Laravel One to One Eloquent Relationship

Mối quan hệ một-một là một mối quan hệ rất cơ bản. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách tạo dữ liệu và truy xuất dữ liệu bằng Eloquent Model. Trong hướng dẫn này, tôi sẽ tạo hai bảng là u...

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

Laravel 9 REST API With Sanctum Authentication

Laravel 9 REST API With Sanctum Authentication

Laravel Sanctum Laravel Sanctum cung cấp một hệ thống authentication đơn giản cho các SPA, ứng dụng Mobile và API đơn giản sử dụng token. Sanctum cho phép ứng dụng của bạn phát hành các mã token...

Easy Laravel Reverb Setup For Beginners

Easy Laravel Reverb Setup For Beginners

Laravel Reverb Lần đầu tiên, Laravel ra mắt một official package cho phép bạn xây dựng một Websocket Server. Trước đây, chúng ta phải sử dụng package bên thứ 3 như Laravel Websocket. Reverb được...

Integrating elFinder into TinyMCE 6 in Laravel

Integrating elFinder into TinyMCE 6 in Laravel

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ười d...

Laravel One to Many Polymorphic Relationship

Laravel One to Many Polymorphic Relationship

One to Many Polymorphic Model Relationship được sử dụng khi một model thuộc về nhiều model khác trên một model kết hợp duy nhất. Ví dụ: Nếu chúng ta có bảng post và video, cả hai đều cần thêm hệ thống...

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 UI Custom Email Verification Template

Laravel UI Custom Email Verification 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 verification thay vì sử dụng template email verificatio...

Laravel Upload File Using Trait

Laravel Upload File Using Trait

Hiện nay, đa số các dự án đều có chức năng upload file, nên tôi đã thử xây dựng một lớp Trait Upload File, để chúng ta dễ dàng sao chép qua các dự án khác để sử dụng, nhằm rút ngắn thời gian phát triể...

ManhDanBlogs