0

Zum Beispiel verwende ich:Wie behandelt man native Ausnahme in Laravel?

return User::findOrFail($id); 

Wenn Zeile mit $id existiert nicht ich Exception.

Wie kann ich diese Ausnahme in JSON-Antwort zurückgeben? Es gibt jetzt HTML Laravel-Seite zurück.

Ich brauche so etwas wie zum Beispiel:

{"error", "No query results for model"} 

Antwort

1

Aus ihrer Dokumentation:

Manchmal können Sie eine Ausnahme werfen wollen, wenn ein Modell nicht gefunden wird. Dies ist besonders nützlich in Routen oder Controllern. Die Methoden findOrFail und firstOrfail rufen das erste Ergebnis der Abfrage ab. Wenn jedoch kein Ergebnis gefunden wird, wird eine Illuminate \ Database \ Eloquent \ ModelNotFoundException ausgelöst.

So können Sie entweder diese Ausnahme fangen, oder gehen Sie mit der einfachen Methode Find. Es wird false zurückgeben, wenn es nicht gefunden wird, also können Sie es entsprechend behandeln.

return User::find($id); 

UPDATE:

Option 1:

try { 
    return User::findOrFail($id); 
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { 
    return json_encode(['error' => 'No query results for model']); 
} 

Option 2:

$user = User::find($id); 
if($user) { 
    return $user; 
} 
return json_encode(['error' => 'No query results for model']); 
+0

ich darüber Bescheid wissen, aber es mir nicht klar Fehler zurück, in HTML-Code eingewickelt – Dev

+0

Was meinen Sie? Es wird eine Ausnahme ausgelöst, und wenn es nicht korrekt abgefangen wird, wird eine HTML-Seite angezeigt, die besagt, dass eine Ausnahme ausgelöst wurde. So funktionieren die Ausnahmen. Um es zu fangen, müssen Sie Ihren Code in einen try/catch-Block einbinden. Der andere Ansatz wäre, einfach mit der Suchmethode zu gehen. – trajchevska

+0

Ich meine, ich brauche Rückmeldung ohne HTML-Code für API-Handy – Dev

0

Sie inaussehen sollteMethode von Handler file. Sie können hier Ausnahmeklasse testen und Return on es je unterschiedliche Antwort im JSON-Format

1

Sie verschiedene Arten von Ausnahmen behandeln, kann diese Ausnahme mit einem ModelNotFoundException

try{ 
    $user = User::findOrFail($id); 
}catch(ModelNotFoundException $e){ 
    return response()->json(['error' => 'User not found'], 400); 
} 

in diesem Fall handhaben sein, und es ist eine andere Art und Weise Um verschiedene Arten von Ausnahmen in der Handler.php abzufangen, die sich in der app/Exceptions/Handler.php befinden, können Sie die Ausnahmen abfangen und innerhalb der render Funktion zurückkehren.

Zum Beispiel insede, die Sie dies Funktion hinzufügen, vor dem return parent::render($request, $e):

if($e instanceof ModelNotFoundException) 
{ 
    return new Response(['message' => 'We haven\'t find any data'], 204); 
} 
Verwandte Themen