たとえば、次を使用します。
return User::findOrFail($id);
行が存在しない場合、$id
例外が発生します。
Json 応答でこの例外を返すにはどうすればよいですか? HTML Laravel ページを返すようになりました。
次のようなものが必要です:
{"error", "No query results for model"}
たとえば、次を使用します。
return User::findOrFail($id);
行が存在しない場合、$id
例外が発生します。
Json 応答でこの例外を返すにはどうすればよいですか? HTML Laravel ページを返すようになりました。
次のようなものが必要です:
{"error", "No query results for model"}
さまざまなタイプの例外を処理できます。この場合、その例外は ModelNotFoundException で処理できます
try{
$user = User::findOrFail($id);
}catch(ModelNotFoundException $e){
return response()->json(['error' => 'User not found'], 400);
}
また、app/Exceptions/Handler.php にある Handler.php でさまざまな種類の例外をキャッチする別の方法があり、そこで例外をキャッチして、 render
関数内で必要なものを返すことができます。
たとえば、その関数の insede の前にこれを追加できますreturn parent::render($request, $e):
if($e instanceof ModelNotFoundException)
{
return new Response(['message' => 'We haven\'t find any data'], 204);
}
ドキュメントから:
モデルが見つからない場合、例外をスローしたい場合があります。これは、ルートまたはコントローラーで特に役立ちます。findOrFail および firstOrFail メソッドは、クエリの最初の結果を取得します。ただし、結果が見つからない場合は、Illuminate\Database\Eloquent\ModelNotFoundException がスローされます。
したがって、その例外をキャッチするか、単純なFind
方法を使用できます。見つからない場合は false を返すので、それに応じて処理できます。
return User::find($id);
更新:
オプション 1 :
try {
return User::findOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return json_encode(['error' => 'No query results for model']);
}
オプション 2 :
$user = User::find($id);
if($user) {
return $user;
}
return json_encode(['error' => 'No query results for model']);
Handler filerender
のメソッドを調べる必要があります。ここで例外クラスをテストし、それに応じてJson形式で異なる応答を返すことができます