繁体   English   中英

Laravel:没有关于模型的查询结果

[英]Laravel: No query results for model

我有一个PageController,它正在显示页面的内容,但是首先我需要检查输入的URL是否存在,只有在这种情况下,我才会显示该页面。

不幸的是,如果搜索到的页面不存在,则会抛出异常:

NotFoundHttpException in Handler.php line 103:
No query results for model [App\Models\PageTranslation].

这是我的代码,如果没有发现任何错误,我会尝试将其重定向到错误404,但仍然会给我NotFoundHttpException。

public function show($page) {

    $lang = Lang::getLocale();

    $page = $this->page_translation->where('slug', '=', $page)->where('lang', '=', $lang)->firstOrFail();

    if(!$page) {
        App::abort(404);
    }

    return view('front.page.show', compact('page'));

}

在这种情况下,如何将用户重定向到“错误404”页面?

使用first()代替firstOrFail() 如果没有匹配的数据,则firstOrFail()立即失败(引发404),并且不会遍历其余代码,而first()返回null

我会捕获异常,然后重定向:

public function show($page) {
        $lang = Lang::getLocale();
        try{
            $page = $this->page_translation->where('slug', '=', $page)->where('lang', '=', $lang)->firstOrFail();
        } catch (\NotFoundHttpException $e) {
            //maybe log the error for debugging purposes
            App::abort(404);
        }
        return view('front.page.show', compact('page'));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM