2016-03-20 2 views
2

Ich habe folgenden Code.Duplicate 404 Code in vielen Controllern: Laravel 5.2

private function GetCountry($CountryID) { 
    $Country = \App\Models\CountryModel 
       ::where('CountryID', $CountryID) 
       ->where('IsPredefined', false) 
       ->first(); 
    if($Country == null) { 
     \App::abort(404); 
     return; 
    } 
    return $Country; 
} 

Wenn Bedingung sicherstellen hinzugefügt wird, wenn der Benutzer eine Abfrage-String versucht, deren dazugehörigen Datensatz in der Datenbank nicht vorhanden. Falls ich die if-Bedingungsprüfung lösche, erhalte ich den folgenden Fehler in Blade.

Der Versuch, Eigentum von Nicht-Objekt zu erhalten

Die gleiche Funktion wird mit verschiedenen Modell definiert entsprechend ihrer Steuerung.

Frage: Kann ich den Code reduzieren? Ich möchte den Fehler 404 halten

Antwort

1

Warum nicht firstOrFail() verwenden, das für Sie, dass der Check tun

wenn kein Ergebnis gefunden wird, wird eine Illuminate \ Database \ Eloquent \ ModelNotFoundException

Wenn die geworfen werden Ausnahme wird nicht abgefangen, eine 404-HTTP-Antwort wird automatisch an den Benutzer zurückgesendet. Daher ist es nicht erforderlich, explizite Prüfungen zu schreiben, um 404 Antworten zurückzugeben, wenn diese Methoden verwendet werden: