Saat menggunakan ->get()
Anda tidak bisa hanya menggunakan salah satu di bawah ini:
if (empty($result)) { }
if (!$result) { }
if ($result) { }
Karena jika Anda dd($result);
akan melihat contoh Illuminate\Support\Collection
selalu dikembalikan, bahkan ketika tidak ada hasil. Pada dasarnya apa yang Anda periksa adalah $a = new stdClass; if ($a) { ... }
yang akan selalu kembali benar.
Untuk menentukan apakah ada hasil yang dapat Anda lakukan salah satu dari yang berikut:
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }
Anda juga bisa menggunakan ->first()
alih-alih ->get()
pada pembuat kueri yang akan mengembalikan instance dari model yang ditemukan pertama kali, atau null
sebaliknya. Ini berguna jika Anda membutuhkan atau hanya mengharapkan satu hasil dari database.
$result = Model::where(...)->first();
if ($result) { ... }
Catatan / Referensi
Informasi Bonus
Perbedaan Kumpulan dan Pembuat Kueri dapat sedikit membingungkan bagi pendatang baru Laravel karena nama metode sering sama di antara keduanya. Untuk alasan itu bisa membingungkan untuk mengetahui apa yang sedang Anda kerjakan. Query Builder pada dasarnya membangun kueri sampai Anda memanggil metode di mana ia akan mengeksekusi kueri dan menekan database (mis. Ketika Anda memanggil metode tertentu seperti ->all()
->first()
->lists()
dan yang lain). Metode-metode itu juga ada pada Collection
objek, yang bisa dikembalikan dari Pembuat Kueri jika ada beberapa hasil. Jika Anda tidak yakin kelas apa yang sedang Anda kerjakan, coba lakukan var_dump(User::all())
dan bereksperimen untuk melihat kelas apa yang sebenarnya dikembalikan (dengan bantuanget_class(...)
). Saya sangat menyarankan Anda memeriksa kode sumber untuk kelas Koleksi, sangat sederhana. Kemudian periksa Pembuat Kueri dan lihat persamaan dalam nama fungsi dan cari tahu kapan itu benar-benar menyentuh database.
first()
, hasilnya berbeda dariget()
, yang dapat diperiksa dengan!$result
hasil kosongnull