【发布时间】:2016-01-10 22:28:01
【问题描述】:
当我使用查询生成器时,我总是发现自己在做这样的事情:
$item = \DB::table('table')->where('slug',$slug)->first();
if ($item===null)
throw \Exception('Not found');
如果有像 Eloquent 这样的 firstOrFail(),这可以轻松解决:
$item = \DB::table('table')->where('slug',$slug)->firstOrFail();
Eloquent 是使用firstOrFail() 的唯一方法吗?查询生成器是否允许这样的事情?
【问题讨论】:
-
您可以扩展 Illuminate 构建器,添加方法并替换
DB外观。我可以问你为什么不在这里使用 Eloquent 吗? :) -
这是一个简单的查询,我需要一个字段,我认为这里不需要 Eloquent
-
Eloquent(以及一般的 ORM)背后的整个想法是您创建一个表示数据的模型(在您的情况下,是一个 DB 表);我想说,如果您使用 Eloquent 或使用 Facade,您将有几乎相等的开销。 Eloquent 更具可读性。如果您愿意,可以进行性能测试:)