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

时间:2015-06-17 12:26:31

标签: laravel view eloquent

我有一个简单的表单,将值发布到控制器,如果从控制器返回结果,一切正常,但如果没有结果,我会收到错误以下错误:

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');
                }

3 个答案:

答案 0 :(得分:1)

建议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,如果找到,则会返回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()将始终返回单个结果。最好试试get()

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

这是我面对b / c

的确切问题
copy