laravel 404 错误页面,重定向
laravel 404 error page , redirect
寻求帮助,我正在从方法中获取调查和问题,而 select 从路线中按 ID 进行调查。但是,当我删除一项调查,并在 url 中写入 http://localhost/survey_details/27 时(27 是调查 ID,它不再存在),我没有得到一些期望或重定向或页面未找到信息,但是在未定义的变量 $dat 中出现错误。但我需要一些如何显示未找到的 404 页面,或者如果 id 不存在则重定向到其他页面。有人能帮我吗?
这是我的路线:
Route::get('survey_draft/{id}', 'SurveyController@editSurveyDraft');
这是我的控制器:
public function viewSurvey($id)
{
$object = DB::table('question')
->where('survey_id', '=', $id)
->where('name', '!=', NULL)
->get();
$teamName = DB::table('survey')->where('surveyId', '=', $id)
->join('team', 'survey.teamId', '=', 'team.teamId')
->join('company', 'company.id', '=', 'team.companyID')
->get();
$company = Auth::user()->company;
$data = Survey::where('surveyId', '=', $id)->get();
$teams = Auth::user()->teams;
$checkUserTeam = DB::table('teammembersall')
->where('UserId', '=', Auth::user()->id)
->get();
$members = Survey::where('surveyId', '=', $id)
->join('team', 'team.teamId', '=', 'survey.teamId')
->join('teammembersall', 'teammembersall.TeamId', '=', 'team.TeamId')
->join('users', 'users.id', '=', 'teammembersall.UserId')
->select('users.*')
->whereNotExists(function ($query) use ($id) {
$query->select(DB::raw(1))
->from('answer')
->whereRaw('answer.answerAboutUserId = users.id')
->where('answer.surveyId', '=', $id)
->where('answer.member_id', '=', Auth::user()->id);
})
->get();
$questions = DB::table('answer')->get();
return view('survey_details', ['object' => $object, 'data' => $data, 'teams' => $teams, 'members' => $members, 'questions' => $questions, 'checkUserTeam' => $checkUserTeam, 'teamName' => $teamName, 'company' => $company]);
}
要解决您眼前的问题,您可以根据您的结果在 $object ... get() 之后添加其中之一。其中之一应该有效。
if(empty($object)){ abort(404); }
或
if(!$object->count()){ abort(404); }
但是,如果您使用 2 种基本 laravel 技术,您的代码会简单得多。
- ORM 而不是 DB::...
- 路由模型绑定。 (它会为你处理你的 404)
寻求帮助,我正在从方法中获取调查和问题,而 select 从路线中按 ID 进行调查。但是,当我删除一项调查,并在 url 中写入 http://localhost/survey_details/27 时(27 是调查 ID,它不再存在),我没有得到一些期望或重定向或页面未找到信息,但是在未定义的变量 $dat 中出现错误。但我需要一些如何显示未找到的 404 页面,或者如果 id 不存在则重定向到其他页面。有人能帮我吗? 这是我的路线:
Route::get('survey_draft/{id}', 'SurveyController@editSurveyDraft');
这是我的控制器:
public function viewSurvey($id)
{
$object = DB::table('question')
->where('survey_id', '=', $id)
->where('name', '!=', NULL)
->get();
$teamName = DB::table('survey')->where('surveyId', '=', $id)
->join('team', 'survey.teamId', '=', 'team.teamId')
->join('company', 'company.id', '=', 'team.companyID')
->get();
$company = Auth::user()->company;
$data = Survey::where('surveyId', '=', $id)->get();
$teams = Auth::user()->teams;
$checkUserTeam = DB::table('teammembersall')
->where('UserId', '=', Auth::user()->id)
->get();
$members = Survey::where('surveyId', '=', $id)
->join('team', 'team.teamId', '=', 'survey.teamId')
->join('teammembersall', 'teammembersall.TeamId', '=', 'team.TeamId')
->join('users', 'users.id', '=', 'teammembersall.UserId')
->select('users.*')
->whereNotExists(function ($query) use ($id) {
$query->select(DB::raw(1))
->from('answer')
->whereRaw('answer.answerAboutUserId = users.id')
->where('answer.surveyId', '=', $id)
->where('answer.member_id', '=', Auth::user()->id);
})
->get();
$questions = DB::table('answer')->get();
return view('survey_details', ['object' => $object, 'data' => $data, 'teams' => $teams, 'members' => $members, 'questions' => $questions, 'checkUserTeam' => $checkUserTeam, 'teamName' => $teamName, 'company' => $company]);
}
要解决您眼前的问题,您可以根据您的结果在 $object ... get() 之后添加其中之一。其中之一应该有效。
if(empty($object)){ abort(404); }
或
if(!$object->count()){ abort(404); }
但是,如果您使用 2 种基本 laravel 技术,您的代码会简单得多。
- ORM 而不是 DB::...
- 路由模型绑定。 (它会为你处理你的 404)