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');
我有一个简单的形式,即 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');