雄辩的 findOrFail()->get()

Ada*_*ert 2 php laravel eloquent

我知道这是一个菜鸟错误,但我可以问一下吗?

为什么

findOrFail()->get();
Run Code Online (Sandbox Code Playgroud)

或者

findOrFail()->first();
Run Code Online (Sandbox Code Playgroud)

返回整个集合,而不是仅仅失败?我知道的正确语法是:

findOrFail();
Run Code Online (Sandbox Code Playgroud)

然而最后一个意外的 ->get() 给我带来了一场噩梦!

Abi*_*aza 5

该方法通过查找列findOrFail($id)返回单个模型,如果未找到模型,则id抛出异常 - 。ModelNotFoundExceptionget()方法返回模型/行的集合。

如果您需要使用 id 查找并期望仅返回一个模型,请findOrFail()仅使用方法。get()最后你不必使用。您可以捕获异常并显示相应的消息作为响应。另外,在这种情况下您不必使用first()方法,因为findOrFail()方法只会返回一个模型结果。

如果您期望模型集合,请get()最后使用方法。如果没有结果,您将得到一个空集合或数组,并且在这种情况下不会引发异常,因为结果将是一个空集合/数组。