Laravel 5 没有模型重定向页面的查询结果

Laravel 5 No query results for model redirect page

我有一个简单的形式,即 post 值到控制器,如果从控制器返回结果,一切正常,但如果没有结果,我会收到以下错误:

No query results for model

正常工作。

我的问题是:

如果没有找到结果是否可以重定向到另一个视图并显示消息?

我试过了,没有结果:

try {
                     $postal = $request->input('postal');
                     $get_all=  Geo_Postal_us::where('postal', $postal)->firstOrFail();  
                     $count=count($get_all);
                     return view('test.show',compact('get_all','count'));

                } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
                    return Redirect::to('view.404');
                }

建议 1

      $postal = $request->input('postal');
      $get_all=  Geo_Postal_us::where('postal', $postal)->first();  
      if($get_all)
        {
            $count=count($get_all);
            return view('test.show',compact('get_all','count'));
        }
        return Redirect::back()->with('message','No results found');

这将检查是否找到 get_all,如果找到 return test.show 视图,否则将重定向到上一个视图,并显示消息 No results found

如果您想声明一个例外,请在您的 App\Exceptions\Handler.php 文件中声明。 示例:

建议 2

public function render($request, Exception $e)
    {   
    //If model  not found return views/errors/404.blade.php page. 
       if ($e instanceof Illuminate\Database\Eloquent\ModelNotFoundException)
        {
        return response(view('errors.error_404'),404);
            
            return parent::render($request, $e);
        }
    }

P.S - 我不明白你为什么必须使用 count() 。方法 first() 将始终 return 一个结果。最好试试 get()

我有同样的问题。我将索引路由放在单个列表之后。然后我只是将索引任务放在单个列表之前。然后它的作品。像这样:

Route::get('index', 'TasksController@index');

Route::get('/{task}', 'TasksController@single');

我也有同样的问题。我有 2 个建议,suggestion1 将导致错误的路线放在其他路线之上。 suggestion2 确保你没有使用相同名称的路由,即使它由不同的控制器控制

这正是我面临

的 b/c 的问题
$api->post('update/{id}', 'App\Http\Controllers\UserController@update');
$api->post('update/{id}', 'App\Http\Controllers\HomeController@update');