Contoh Cara Membuat Custom Artisan Command di Laravel 8

Hilmi Hidayat
6 min readSep 15, 2021

Laravel Custom Artisan Command — Hi coders. ! 👋 Di artikel ini saya akan share bagaimana cara membuat custom artisan command di Laravel 8. Di tutorial ini saya akan simulasikan membuat custom artisan command untuk menjalankan perintah menambahkan data user ke table users di database. Custom artisan command yang akan saya buat ini bertujuan untuk menggantikan flow register user. Tapi sebelumnya, lebih baik kita berkenalan lebih dulu dengan artisan di laravel.

Apa itu Artisan ?

Artisan merupakan Command Line Interface atau CLI yang sudah include atau disertakan dengan Laravel. Artisan ada di root aplikasi sebagai artisan script dan menyediakan sejumlah command atau perintah yang dapat dimanfaatkan untuk membantu kita saat membangun aplikasi dengan laravel. Untuk melihat semua perintah artisan atau artisan command yang tersedia, kita dapat menggunakan perintah;

php artisan
//atau
php artisan list

Setiap artisan command di laravel juga menyediakan help screen untuk menampilkan atau menjelaskan argumen atau option dari artisan command yang tersedia. Untuk melihat help screen, awali nama artisan command dengan help:

Contoh:

php artisan help migrate

Custom Artisan Command

Lalu, bagaimana cara kita untuk membuat custom artisan command ? Nah, di artikel ini akan dijelaskan sedikit tentang implementasi membuat artisan command sendiri dan penerapannya.

Selain menggunakan perintah artisan yang disediakan oleh laravel, kita juga dapat membuat custom command sendiri. Command biasanya disimpan di direktori app/Console/Commands; namun kita bebas memilih lokasi penempatan atau penyimpanan selama command tersebut dapat dimuat oleh composer.

Di tutorial ini, saya asumsikan bahwa kita sudah mempunyai laravel project yang siap digunakan. Untuk membuat artisan command baru, kita dapat menggunakan perintah artisan make:command. Perintah ini akan membuat command class baru di direktori app/Console/Commands. Jika direktori tersebut tdak ada di laravel project kita, direktori tersebut akan otomatis dibuat saat pertama kali kita menjalankan perintah artisan make:command.

Generate new Artisan Command

php artisan make:command AddUser

Oke. Let’s create our first custom artisan command. Jalankan perintah seperti di atas pada terminal untuk membuat custom artisan command dengan nama class AddUser.

<?phpnamespace App\Console\Commands;use Illuminate\Console\Command;
use App\Models\User;
use Hash;
class AddUser extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'add:user';
/**
* The console command description.
*
* @var string
*/
protected $description = 'This artisan command is used to add user data without registering.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$input['name'] = $this->ask('Your name?');
$input['email'] = $this->ask('Your email?');
$input['password'] = $this->secret('What is the password?');
$input['password'] = Hash::make($input['password']);
User::create($input);
$this->info('Data added successfully');
}
}

Kemudian buka file app/Console/Commands/AddUser.php dan ubah kode yang ada menjadi seperti di atas.

Setelah membuat artisan command baru, kita harus menentuka value untuk property signature dan description. Kedua property ini digunakan untuk menampilkan command di help screen. Property signature juga memungkinan kita untuk menentukan ekspetasi input command. Method handle akan dipanggil ketika command dijalankan. Kita dapat menempatkan logic perintah di dalam method ini.

Jadi, dari kode AddUser.php seperti di atas, ketika kita jalankan perintah php artisan add:user maka akan menampilkan pertanyaan untuk name, email password di layar terminal dan akan menambahkan data yang kita inputkan di layar terminal ke table users di database.

Mari kita lihat penjelasan lengkapnya 👇

Nah, method signature dan description akan ditampilkan di layar terminal seperti gambar di atas. Silahkan coba menjalankan perintah php artisan atau php artisan list, kemudian cari custom artisan command yang telah dibuat di file AddUser.php.

Atau gunakan perintah php artisan help add:user untuk menampilkan detail dari command tersebut secara spesific.

Run Custom Artisan Command

Untuk menjalankan custom artisan command kita di laravel, kita hanya tinggal menjalankan perintah php artisan add:user, maka akan muncul beberapa pertanyaan seperti name, email dan password, selanjutnya data-data yang telah diinputkan akan ditambahkan ke table users di database dan menampilkan pesan “Data added successfully”.

Bagaimana cara menambahkan confirmation ?

Jika perlu menambahkan confirmation (yes or no) saat menjalankan perintah artisan, kita dapat menggunakan confirm method. By default, method ini akan me-return false, tapi jika user menginputkan y atau yes sebagai respons maka method ini akan me-return true.

if ($this->confirm('Do you wish to continue?')) {
//
}

Kita dapat menentukan bahwa confirm akan me-return true secara default dengan passing true sebagai second argument ke confirm method seperti contoh di bawah ini.

if ($this->confirm('Do you wish to continue?', true)) {
//
}

Menampilkan Table dengan Artisan Command

php artisan make:command Users

Contoh kedua, kita ingin menampilkan data-data yang ada di table users menggunakan custom artisan command yang telah kita buat. Untuk membuatnya, kita buat lagi custom artisan command menggunakan perintah seperti di atas.

use App\Models\User;

Kemudian buka file Users.php yang terletak di direktori app/Console/Commands. tambahkan trait use App\Models\User; seperti contoh di atas.

protected $signature = 'users';

Selanjutnya di method signature kita buat simple saja dengan users.

public function handle()
{
$this->table(
['Name', 'Email'],
User::all(['name', 'email'])->toArray()
);
}

Nah, untuk method handle, gunakan kode seperti di atas untuk menampilkan data-data dari table users dalam bentuk array.

Oke, sekarang kita coba jalankan artisan command yang telah buat untuk menampilkan data-data dari table users menggunakan perintah php artisan users. Maka output yang ditampilkan setelah menjalankan command tersebut akan seperti gambar di atas.

Run Artisan Command in Tinker

Kita juga dapat menjalankan artisan command via tinker di laravel. Tinker memungkinkan kita untuk berinteraksi dengan seluruh aplikasi laravel kita menggunakan command line, termasuk eloquent models, jobs, events dan lain-lain. Untuk menggunakan tinker, kita bisa gunakan perintah php artisan tinker.

php artisan vendor:publish --provider="Laravel\Tinker\TinkerServiceProvider"

Sebelum dapat menggunakan artisan command di tinker, kita perlu publish tinker configuration file menggunakan perintah seperti di atas.

'commands' => [
App\Console\Commands\AddUser::class,
App\Console\Commands\Users::class,
],

Kemudian buka file di config/tinker.php dan daftarkan class custom artisan command yang telah kita buat di dalam array seperti contoh di atas.

Oke, sekarang kita bisa menjalankan laravel artisan command di tinker dengan menggunakan perintah awal php artisan tinker dan diikuti dengan artisan command yang telah dibuat seperti contoh gambar di atas.

Sekian artikel tutorial membuat custom artisan command di laravel 8 ini. Dari awal sampai akhir, kita sudah belajar bagaimana cara membuat simple custom artisan command di laravel, mulai dari membuat artisan command untuk menambahkan data ke table users, menampilkan data dari table users menggunakan artisan command, dan di akhir artikel kita juga belajar bagaimana cara menjalankan artisan command di tinker laravel 8.

Untuk penjelasan lengkapnya tentang artisan di laravel, silahkan pelajari di situs resmi laravel atau dengan klik link di bawah ini. Semoga artikel ini bisa bermanfaat dan sampai jumpa di artikel berikutnya. 👋

--

--

Hilmi Hidayat

I'm Hilmi, a Backend Engineer of Panenpanen.id. I like to learn something new and share it with you all.