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

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

Laravel TinyMCE 6 Image Upload

Laravel TinyMCE 6 Image Upload

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 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 Export & Import CSV

Laravel Export & Import CSV

Trong bài viết này, tôi sẽ hướng dẫn các tạo cách Export hoặc Import CSV trong Laravel. Nhưng thay vì chỉ viết hàm đơn thuần trong PHP thì tôi sẽ hướng dẫn các tạo ra một Service trong Laravel bằng cá...

Generate PDF with Header and Footer on every page in Laravel

Generate PDF with Header and Footer on every page in Laravel

Hôm nay, trong bài viết này mình sẽ chia sẻ với các bạn cách dompdf mà header và footer sẽ được hiển thị ở tất cả các trang. Đây cũng là một vấn đề khá phổ biến, khi chúng ta phát triển các tính năng...

Laravel Custom Rules

Laravel Custom Rules

Trong quá trình phát triển website Laravel, mình cảm thấy hệ thống Validation của Laravel rất tuyệt vời, nó cung cấp đã cung cấp cho chúng ta một bộ quy tắc kiểm tra dữ liệu, mà trong các trường hợp b...

Laravel Middlewares

Laravel Middlewares

Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP gửi đến ứng dụng bạn. Nó là một lớp trung gian nằm giữa request và controller. Bạn có thể thêm các xử lý logic trước khi gửi đến contr...

How to insert into a database at lightning speed?

How to insert into a database at lightning speed?

Trong quá trình thực hiện dự án cho công ty, một trong những yêu cầu đặt ra là import dữ liệu từ file CSV (chứa dữ liệu từ hệ thống cũ) vào cơ sở dữ liệu MySQL của hệ thống mới. Do sự thay đổi cấu...

ManhDanBlogs