我在Laravel5.5API路由上使用findOrFail,如下所示……
public function getCategory(Request $request, $id) {
/* Get Category From ID */
try {
$category = Category::with('users')->findOrFail($id);
}
/* catch(Exception $e) catch any exception */
catch(ModelNotFoundException $e) {
/* Return Success Response */
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'category_id_not_found',
));
}
}
如果我输入了一个不存在的ID,那么我会得到一个404错误,而不是JSON响应。
我哪里错了?
更新
原来我没有包括
use Illuminate\Database\Eloquent\ModelNotFoundException;
在控制器中,感谢Sohel0415让我朝那个方向看。
发布于 2018-02-12 00:53:22
试试NotFoundHttpException
public function getCategory(Request $request, $id) {
/* Get Category From ID */
try {
$category = Category::with('users')->findOrFail($id);
}
/* catch(Exception $e) catch any exception */
catch(NotFoundHttpException $e) {
/* Return Success Response */
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'category_id_not_found',
));
}
}
或者,您可以执行以下操作:
public function getCategory(Request $request, $id) {
$category = Category::with('users')->find($id);
if($category!=null){
return Response::json(array(
'status_code' => 200,
'category' => $category,
));
}
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'category_id_not_found',
));
}
}
发布于 2018-02-12 00:52:35
findOrFail
方法返回一个对象,如果找不到就抛出一个错误,就像在Laravel docs中一样,您可能希望使用find
方法并使用if($category)
检查模型是否存在。
https://stackoverflow.com/questions/48733898
复制相似问题