【问题标题】:Laravel: No query results for modelLaravel:模型没有查询结果
【发布时间】:2016-10-12 20:43:32
【问题描述】:

我有一个 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 页面?

【问题讨论】:

    标签: php exception-handling laravel-5.2


    【解决方案1】:

    使用first() 代替firstOrFail()。如果没有匹配的数据,firstOrFail() 会立即失败(抛出 404)并且不会执行其余代码,而 first() 会返回 null

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 2014-12-26
        相关资源
        最近更新 更多