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.