Laravel findOrFail 不存在

Oth*_*ane 2 laravel eloquent laravel-5

当我在代码中使用 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
Run Code Online (Sandbox Code Playgroud)

Mat*_*ges 5

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

\n\n

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

\n\n
public function show(Question $question, Reply $reply) {\n    return $question->replies()->findOrFail($reply->id);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
public function show(Reply $reply) {\n    return $reply;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望能帮助到你。

\n