首页 > 解决方案 > Laravel findOrFail 不存在

问题描述

当我在代码中使用 findOrFail 时它不起作用

我已经尝试了 find 方法,它按我的预期工作

public function show(Question $question, Reply $reply) {
    return $question->replies->findOrFail($reply->id);
}

BadMethodCallException: Method Illuminate\Database\Eloquent\Collection::firstOrFail does not exist. in file

标签: laravellaravel-5eloquent

解决方案


由于replies是 Question 关系,如果使用$question->replies,则返回一个Illuminate\Database\Eloquent\Collection实例,并且该findOrFail方法不可用,因为该方法属于Illuminate\Database\Eloquent\Builder该类。

如果你想用findOrFail它来构建你的查询,你必须像这样使用它:

public function show(Question $question, Reply $reply) {
    return $question->replies()->findOrFail($reply->id);
}

但是,正如@porloscerrosΨ 的评论中所提到的,Reply $reply您的函数中有一个参数。您可以简单地返回 $reply:

public function show(Reply $reply) {
    return $reply;
}

希望能帮助到你。


推荐阅读