2016-12-21 4 views
2

Ich erstelle eine Ansicht, indem ich eine eloquente Abfrage mache und übergebe sie dann an Blade.Prüfen, ob ein Objekt in Laravel leer ist

Aber es geht immer davon aus, dass $ contacts etwas hat, selbst wenn die Abfrage mir nichts gibt.

Ich habe dd($contacts) und erhalten:

Collection {#247 ▼ 
    #items: [] 
} 

Wie kann ich überprüfen, wenn es leer ist?

Antwort

7

Wenn es sich um eine Eloquent Collection handelt, wie es aus Ihrem Beispiel zu sein scheint, können Sie die Helferfunktion isEmpty verwenden.

@if(!$contacts->isEmpty()) 
//display contacts 
@else 
You dont have contacts 
@endif 

Collections Documentation

3

Ihre Eloquent Abfrage gibt eine Reihe von Ergebnis, so dass Sie count verwenden können.

@if(count($contacts) > 0) 
//Display contacts 
@else 
//No contacts 
@endif 
+0

Es ist nicht eine Reihe von Ergebnissen, es ist ein beredtes Collection-Objekt, das Array-Schnittstellen implementiert. –

+0

@ JeremyHarris natürlich hast du recht, ich meinte nur das Ergebnis ist ein Array :) – Michel

+0

das ist, was ich brauchte. Ich versuchte zu überprüfen, ob meine URL-Parameter leer waren, indem ich 'empty ($ request-> request)' verwendete, aber das gab 'false' zurück, auch wenn keine Abfragezeichenfolgen gesetzt waren. Ihre Methode hat jedoch funktioniert. –

2

Ihr $contacts ist leer. Bcoz Ihre Abfrage kann keine Daten abrufen. Sobald Ihre Abfrage Daten nicht abrufen kann, wird ein leeres arrya zurückgegeben. So überprüfen Sie es

@if($contacts->isEmpty()) 
    {{ 'Empty' }} 
    @else 
    {{ 'you have data' }} 
    @endif 
2

Es gibt nur wenige Möglichkeiten:

if (!empty($contacts)) 

if (!contacts->isEmpty()) 

if (count($contacts) > 0) 

if ($contacts->count() > 0) 
Verwandte Themen