Laravel查询生成器firstOrFail

Laravel查询生成器firstOrFail

本文介绍了Laravel查询生成器firstOrFail()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用查询生成器时,我总是发现自己在做这样的事情:

When I use Query Builder I Always find myself doing something like this:

    $item = \DB::table('table')->where('slug',$slug)->first();

    if ($item===null)
        throw \Exception('Not found');

如果存在像Eloquent这样的firstOrFail(),则可以轻松解决此问题:

This could be easly solved if there were a firstOrFail() like Eloquent:

$item = \DB::table('table')->where('slug',$slug)->firstOrFail();

口才是使用firstOrFail()的唯一方法吗?查询生成器是否允许类似这样的内容?

Is Eloquent the only way to use firstOrFail()? Does Query Builder allow something like this?

推荐答案

您可以通过宏将其自己添加到查询构建器中:

You can add it yourself to the query builder, via a macro:

DB::query()->macro('firstOrFail', function () {
    if ($record = $this->first()) {
        return $record;
    }

    throw new Exception('No records found');
});

然后,您可以像雄辩一样使用它:

Then you can use it the same way you do Eloquent:

$item = DB::table('table')->where('slug', $slug)->firstOrFail();

这篇关于Laravel查询生成器firstOrFail()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 03:16