我有一个简单的表单,将值发布到控制器,如果从控制器返回结果,一切正常,但如果没有结果,我会收到错误以下错误:
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');
}
答案 0 :(得分: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
文件中声明例外,请执行此操作。
例如:
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