Laravel 5.5 - 处理'where'的错误异常

时间:2018-02-16 08:42:21

标签: laravel

在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'语句执行此操作?

5 个答案:

答案 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!!";
}