Laravel 5,类中找不到方法“findOrFail”

3
我正在从Laracast课程Laravel 5基础中学习Laravel 5,使用PhpStorm IDE。
我遇到了模型的静态方法的问题,例如where()find()findOrFail()
当我使用这些方法时,PhpStorm显示:

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

我的模型是Article,并且方法all()可以工作。
我该如何解决这个问题?

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - djt
你是如何调用这个方法的? - Rohit Awasthi
尝试使用Laravel IDE Helper - Bogdan
4个回答

6
现在你可以使用Laravel IDE助手,为了正确识别模型方法(例如paginate、findOrFail),请为您的模型类添加注释。

/** @mixin \Eloquent */


4
感谢您的关注。但我已解决问题,我使用了query()方法:
  public function show($id)
    {

        $article = Article::query()->findOrFail($id);

       return view('articles.show', compact('article'));

    }

2

这是因为这些方法会触发魔术方法__call,而phpStorm无法跟踪。实际上,它只是以下操作的快捷方式...

$article = new \App\Article;
$query = $article->newQuery();

$query->where('column', 'value')->get();

非常感谢您的回答!对我很有帮助。谢谢 :) - Nursultan Aubakirov

-1

我曾经遇到过同样的问题,最后发现当我扩展主页面时,在show.blade.php中忘记了一个单引号: @extends('app) 当我意识到这个问题并修复它后,一切都完美地运行了: 这个可以工作:$article = Article::findOrFail($id); 这个也可以工作:$article = Article::query()->findOrFail($id); 希望这可以帮助你(我在Laravel 5.3中尝试过这个方法)。


这个错误很可能会发生在每个人身上,因为当你尝试扩展你的开放括号然后按单引号键时,你会认为它会添加两个单引号:'',但实际上并不是这样,我在phpStorm IDE中尝试过了。这就是为什么我认为这可能会有用! - Mohamed Saif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接