Penggunaan has(), hasAny() dan whenHas() di Laravel

Validasi input dari pengguna sangatlah penting dalam pembuatan aplikasi untuk meminimalisir gangguan karena adanya data yang kurang lengkap atau tidak sesuai permintaan tapi tetap diproses oleh sistem. has(), hasAny(), dan whenHas() adalah method yang dapat digunakan untuk memeriksa apakah inputan yang dikirim user memiliki nilai tertentu atau tidak.

Katakanlah ketika kita mendefinisikan input aplikasi berupa tiga atribut yaitu: name, email, dan password. Kita bisa memeriksa apakah ketiganya ada dalam request atau tidak menggunakan method has(), hasAny(), atau whenHas().

Penggunaan has()

has digunakan untuk memeriksa atau ngecek apakah di dalam request mengandung nilai tertentu atau tidak. Contoh apabila kita ingin mengecek apakah di dalam payload request ada parameter name atau tidak maka cara mengeceknya seperti di bawah ini:

if ($request->has('name')) {
    // ...
}

Jika ingin mengecek apakah name, email, dan password ada di payload request atau tidak maka bisa memasukkan ketiganya ke dalam sebuah array. Ketiganya harus ada jika ingin hasilnya bernilai true.

if ($request->has(['name', 'email', 'password'])) {
    // ...
}

Penggunaan hasAny()

hasAny digunakan untuk mengecek payload request memiliki parameter sekurang-kurangnya satu dari yang telah didefinisikan pada parameter. Contoh ketika kita ingin mengecek payload request minimal mengandung minimal salah satu dari name, email, atau password maka cara mengeceknya sebagai berikut:

if ($request->hasAny(['name', 'email', 'password'])) {
    // ...
}

Penggunaan whenHas()

whenHas penggunaannya hampir sama dengan has. Bedanya adalah kalau whenHas akan mengeksekusi closure ketika nilai yang ditandai tersedia di dalam payload request. Contoh penggunaaannya adalah sebagai berikut:

$request->whenHas('name', function (string $input) {
    // lakukan sesuatu jika $request->name tersedia
});

Closur kedua bisa digunakan untuk menjalankan perintah ketika nilai tidak ditemukan pada payload request. Contoh:

$request->whenHas('name', function (string $input) {
    // lakukan sesuatu jika $request->name tersedia...
}, function () {
   // lakukan sesuatu jika $request->name tidak tersedia...
});
Photo of author

Ahmad Budairi

Ahmad Budairi, S.Pd. | Seorang Web Developer sekaligus kader Gerakan Pemuda Ansor yang sangat suka menulis artikel. Saya di sini akan lebih banyak menulis seputar Laravel, vue, vuetify, inertiajs, dan hal lain yang berhubungan dengan web development.Kontak: budairi.contact[et]gmail[dot]com