在Laravel 5.5中,我试图像这样处理错误异常......
try {
$fruits = Fruit::where('fruit_id', $user->fruit->id)->get();
}
catch(ModelNotFoundException $e) {
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'fruit_id not found',
));
}
但是这给了我一个'试图获得非对象的属性'错误
相同的错误处理对于findorfail是否正常工作,我应该如何为'where'语句执行此操作?
答案 0 :(得分:2)
我认为你在try块中的where查询中传递了错误的值。
try {
$fruits = Fruit::where('fruit_id', $user->fruit->id)->get();
}
是fruit_id还是id,因为你在水果模型本身上查询它。
答案 1 :(得分:1)
感谢评论中的一些指示,我改为
try {
$fruits = Fruit::where('fruit_id', $user->fruit->id)->get();
}
catch(\Exception $e) {
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'fruit_id not found',
));
}
现在所有人都在工作我正在抓住正确的例外
答案 2 :(得分:0)
即使你开始工作,我也想提一下Laravel的Exception Handler。
report method允许您捕获任何异常类型并自定义您希望处理和前进的方式。还有一个报告助手功能,可以全局访问。
此外,reportable and renderable例外允许您创建和自定义您的回复。
答案 3 :(得分:0)
在Laravel 5.7上测试
try {
$fruits = Fruit::where('fruit_id', $user->fruit->id)->get();
}
catch(\Exception $e) {
abort(404);
}
答案 4 :(得分:-1)
请尝试以下代码:
if ($user->fruit) {
try {
$fruits = Fruit::where('fruit_id', $user->fruit->id)->get();
} catch(\Exception $e) {
return Response::json(array(
'error' => true,
'status_code' => 400,
'response' => 'fruit_id not found',
));
}
} else {
return "User Fruit doesn't exists!!";
}