Laravel中的firstOrFail()函数行为

时间:2018-05-13 20:32:00

标签: laravel model

我有一个带有这条线的工厂:

$channel = \App\Model\Channel::firstOrFail();

如何设置ID? 我知道有一个像

这样的功能
$channel = \App\Model\Channel::firstOrFail($id);

但是上面的那个有什么区别,你如何设置呢?

2 个答案:

答案 0 :(得分:3)

firstOrFail只需致电->take(1)->get()->first()

如果返回null,则抛出ModelNotFoundException并将模型设置为当前查询构建器实例。

在您的情况下,

Channel扩展Model,它使用了Query Builder,它具有firstOrFail功能。

如果你想设置id,那就是:

$channel = \App\Model\Channel::findOrFail($id);

此外,没有必要完全限定您的命名空间,因此您可以自由地执行:

$channel = App\Model\Channel::findOrFail($id);

答案 1 :(得分:1)

$channel = \App\Model\Channel::firstOrFail();

只返回模型中的第一个Channel,通常是ID号最小的Channel。这可以用于检查数据库中是否存在任何频道,例如你想知道用户可以选择一个可能的频道。

$id = ['id'];
$channel = \App\Model\Channel::firstOrFail($id);

是相同的,但只会返回数据库中第一个模型的id

如果要返回具有特定ID的元素,则应使用

$channel = \App\Model\Channel::find($id)->firstOrFail();

$channel = \App\Model\Channel::findOrFail($id);