学习查询构造器中的 sole() 方法
今天在翻译 翻译:Laravel 9.4 发布 的时候,新增了 soleValue()
方法。当我看见 sole()
这个方法时很陌生,我连听都没听说过它。在我们的 Laravel 8.5 和 Laravel 9.0 的文档中我也没有见到这个方法,写下这篇文章来记录一下。
`sole()` 方法是在 Laravel 8.23 版本添加的查询构造器方法,用来检索一条「唯一的」记录,并且它还会返回额外的断言。
实践:
现 users
表有 2 条记录
我们要查询 name
像 ricky
的记录,确保它在表中只有一条记录。
Users::query()->where('name', 'like', '%ricky%')->sole();
因为表中有重复记录,sole()
方法会抛出一个 MultipleRecordsFoundException
异常,并断言数据库中重复的条数。
再来查询一条不存在的记录试一下
Users::query()->where('name', 'like', '%coco%')->sole();
当查询记录不存在时,会抛出 ModelNotFoundException
异常
只有当数据查询匹配,且在该表中是唯一一条记录时,才会返回一个 Model
对象。
Users::query()->where('name', 'ricky')->sole();
App\Models\User {#1070 ▼ `#connection: "mysql"
#table: "users"
#primaryKey: "id"
...
#attributes: array:8 [▶]
}
在我们要查询一条表中唯一的记录,例如 订单号
并且要保证它不能重复的时候,这很有用,帮我们省去了不必要的判断。
本作品采用《CC 协议》,转载必须注明作者和本文链接
mark
6