2016-09-29 6 views
1

I Problem haben, wenn ich überprüfen, ob Sammlung leer ist oder nicht, gibt Laravel mir FehlerCall to undefined function Laravel

„auf nicht definierte Methode Illuminate \ Database \ Abfrage \ Builder :: isEmpty () ".

Tho es funktioniert in anderen Controller, aber wenn Controller in Unterordner ist plötzlich funktioniert nicht mehr.

Hier ist mein Code:

$group = UserGroup::where('id', $request->group_id)->first(); 
    if($group->isEmpty()){ // I get error from here 
     return redirect()->back(); 
    } 
+0

diese Funktion nicht definiert ist, u brauchen es 'var_dump ($ group) zu überprüfen;' – devpro

+0

ich das gleiche bekommen -> find() isEmpty() als Rückkehr wahr oder falsch beschrieben, verursacht einen Fehler nicht . Wurde es vielleicht aus 5.2 in Eloquent entfernt? – Mladen

Antwort

0

Einer der beliebtesten Wege Debuggen in PHP immer noch die gleichen wie vor - zeigt Variablen im Browser, mit der Hoffnung zu finden, was der Fehler ist. Laravel hat eine spezielle kurze Hilfsfunktion zum Anzeigen von Variablen - dd() - steht für “Dump and Die”, ist aber nicht immer praktisch. Was sind andere Optionen?

Beachten Sie, dass die unten genannten Methoden finden, wo unsere Klasse fehlschlägt und welche Bedingungen verfügbar sind, nachdem unsere Abfrage ausgeführt wurde. Was ist unser erwartetes Ergebnis vor dem Drucken? Diese Methoden sind die besten Methoden, um den von is benötigten Fehler zu finden.

Erstens, was ist das Problem mit dd()? Nun, lassen Sie uns sagen, dass wir alle Zeilen aus DB-Tabelle erhalten möchten und steckt sie:

enter image description here

Aber Sie erhalten den Punkt - die tatsächlichen Werte sehen:

$methods = PaymentMethod::all(); 
dd($methods); 

wir so sehen würde, Wir müssen drei weitere Male klicken, und ohne diese Aktionen sehen wir nicht das volle Ergebnis. Zuerst dachte ich - vielleicht hat dd() Funktion einige Parameter dafür? Leider nicht. Also lassen Sie uns nach anderen Optionen suchen:

var_dump() und die():

gute alte PHP Art und Weise die Daten von jeder Art zeigen:

$methods = PaymentMethod::all(); 
var_dump($methods); 
die(); 

Was wir jetzt sehen:

enter image description here

Aber es gibt noch mehr lesbaren Weg.

Ein weiteres PHP eingebaute Funktion print_r() eine perfekte Beschreibung für uns hat: „Drucke Menschen lesbare Informationen über eine Variable“

$methods = PaymentMethod::all(); 
print_r($methods); 
die(); 

Und dann gehen Quelle des Browsers anzeigen ... Wir erhalten diese:

enter image description here

Jetzt können wir die Inhalte leicht lesen und versuchen, den Fehler zu untersuchen.

Darüber hinaus print_r() Funktion hat einen anderen optionalen Parameter mit True/False-Werte - Sie können nicht nur die Variable echo, sondern geben sie als String in eine andere Variable. Dann können Sie mehrere Variablen zu einem zusammenfassen und zum Beispiel irgendwo aufzeichnen.

Also, in solchen Fällen ist dd() nicht so bequem - PHP native Funktionen zur Rettung. Aber wenn Sie möchten, dass das Skript buchstäblich eine einfache Variable "ausgibt und stirbt" - dann dd($var) is probably the fastest to type.

Verwandte Themen