Kullanırken ->get()
aşağıdakilerden herhangi birini kullanamazsınız:
if (empty($result)) { }
if (!$result) { }
if ($result) { }
Çünkü dd($result);
fark etmezseniz Illuminate\Support\Collection
, sonuç olmasa bile her zaman döndürüldüğünü fark edersiniz . Aslında kontrol ettiğiniz şey $a = new stdClass; if ($a) { ... }
her zaman doğru olacaktır.
Herhangi bir sonuç olup olmadığını belirlemek için aşağıdakilerden birini yapabilirsiniz:
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }
Ayrıca kullanabilirsiniz ->first()
yerine ->get()
ilk sırada bulunan modelinin veya bir örneği dönecektir sorgu oluşturucu üzerinde null
aksi. Veritabanından yalnızca bir sonuç gerekiyorsa veya bekliyorsanız bu yararlıdır.
$result = Model::where(...)->first();
if ($result) { ... }
Notlar / Referanslar
Bonus Bilgileri
Koleksiyon ve Sorgu Oluşturucu farklılıkları Laravel'in yeni gelenleri için biraz kafa karıştırıcı olabilir, çünkü yöntem adları genellikle ikisi arasında aynıdır. Bu nedenle ne üzerinde çalıştığınızı bilmek kafa karıştırıcı olabilir. Sorgu Oluşturucu, siz sorguyu yürütecek ve veritabanını vuracak bir yöntemi çağırana kadar temelde bir sorgu oluşturur (örn ->all()
->first()
->lists()
. Ve diğerleri gibi belirli yöntemleri çağırdığınızda ). Bu yöntemler , birden çok sonuç varsa Query Builder'dan döndürülebilen nesne üzerinde de bulunur Collection
. Hangi sınıfla çalıştığınızdan emin değilseniz, var_dump(User::all())
hangi sınıfların gerçekten geri döndüğünü görmek için yapmayı ve denemeyi deneyin (get_class(...)
). Collection sınıfının kaynak koduna göz atmanızı şiddetle tavsiye ederim, oldukça basit. Ardından Sorgu Oluşturucu'ya bakın ve işlev adlarındaki benzerlikleri görün ve veritabanına gerçekten ne zaman isabet ettiğini öğrenin.
first()
, sonuç farklıdırget()
,!$result
boş sonuç olarak kontrol edilebilirnull