【问题标题】:Laravel 5, Method 'findOrFail' not found in classLaravel 5,在课堂上找不到方法“findOrFail”
【发布时间】:2018-11-19 15:36:00
【问题描述】:

我正在 Laracast 课程中学习 Laravel 5:Laravel 5 Fundamentals,使用 PhpStorm IDE。

我对模型的静态方法有疑问,例如where()find()findOrFail()

当我使用这些方法时 PhpStorm 显示:

在 App\Article 类中找不到方法“findOrFail”。

我的模型是 Article,all() 方法有效。

我该如何解决这个问题?

【问题讨论】:

  • 请发布您的文章模型的代码,以及您尝试使用该模型的位置。
  • 你是怎么调用这个方法的?
  • 尝试使用Laravel IDE Helper

标签: laravel laravel-5 eloquent


【解决方案1】:

现在您可以使用Laravel IDE helper 并正确识别模型方法(即分页、findOrFail)为您的模型类添加注释

/** @mixin \雄辩的*/

【讨论】:

    【解决方案2】:

    谢谢你的有趣。但我解决了,我使用 query() 方法:

      public function show($id)
        {
    
            $article = Article::query()->findOrFail($id);
    
           return view('articles.show', compact('article'));
    
        }
    

    【讨论】:

      【解决方案3】:

      这是因为这些方法正在命中 phpStorm 不知道如何遵循的魔术方法__call。真的只是下面的一个捷径……

      $article = new \App\Article;
      $query = $article->newQuery();
      
      $query->where('column', 'value')->get();
      

      【讨论】:

      • 非常感谢您的回答!这对我很有帮助。谢谢)
      【解决方案4】:

      我也遇到了同样的问题,最后我扩展母版页时忘记了show.balde.php中的单引号: @extends('应用程序) 当我终于意识到并修复它时,一切都很完美: 这有效: $article = Article::findOrFail($id); 这也有效: $article = Article::query()->findOrFail($id); 我希望这会有所帮助(我在 Laravel 5.3 中尝试过)。

      【讨论】:

      • 这个错误可能发生在每个人身上,因为当尝试扩展您的左括号然后按单引号键时,您假设它会添加 2 个单引号:''但它不会那样做我在 phpStorm IDE 中尝试过。这就是为什么我认为这可能有用!
      猜你喜欢
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多