发布日期:
2026年2月4日
Laravel 版本:
12.50.0
概括
Laravel v12.50.0 引入了一项新功能
hasMany()
新增了用于检查集合是否包含多个匹配项的集合方法,同时支持唯一排队监听器、类型化缓存获取器,以及用于排除附加属性的新模型方法。此版本延续了 Laravel 对开发者体验改进的重视,扩展了枚举支持并修复了大量错误。
主要亮点包括:
- 新的
hasMany()收集方式 - 支持唯一排队监听器
withoutAppends()模型方法- Cache 外观的类型化 getter
authority()URI解析方法- 支持缓存数组键的枚举
- 修复了大量错误并改进了字体。
什么是新的
hasMany()
领取方式
Laravel 12.50.0 添加了
hasMany()
该方法用于检查集合,提供了一种直接的方式来检查集合中是否包含多个符合指定条件的项。此方法与以下方法互为逆操作:
hasSole()
(v12.49.0 版本引入)——其中
hasSole()
确认只有一个匹配项,
hasMany()
确认多场比赛。
// 检查集合是否包含多个元素$集合
->
hasMany
();// 使用回调过滤器$用户
->
hasMany
(
fn
($user) => $user
->
isActive
());// 使用键/值对$订单
->
hasMany
(
'地位'
,
'待办的'
(英文):// 使用运算符语法$产品
->
hasMany
(
'价格'
,
'>='
,
100
(英文):
这种方法特别适用于验证逻辑、条件工作流和筛选场景,在这些场景中,您需要在执行操作之前确认是否存在多个项目。
拉取请求: #58550
唯一排队监听器
已排队的事件监听器现在可以实现
ShouldBeUnique
和
ShouldBeUniqueUntilProcessing
合约可以防止重复的监听器在短时间内连续被派往队列:
命名空间
应用程序监听器
;使用
应用程序\事件\许可证已保存
;使用
照亮\合约\队列\应该唯一
;使用
照亮\合约\队列\应该队列
;班级
获取产品密钥
实现
应该排队
,
应该独一无二{
民众
功能
唯一标识符
(
许可证已保存
$event)
:
细绳{
返回
$事件
->
执照
->
ID;}
民众
功能
__invoke
(
许可证已保存
$event)
:
空白{
// 处理事件...}}
此功能反映了独特的作业模式,并解决了生产环境中常见的监听器多次被派发到队列中的问题,而每个唯一标识符的监听器本应只运行一次。与此不同的是
WithoutOverlapping
仅阻止并发执行的中间件
ShouldBeUnique
防止重复作业一开始就进入队列。
拉取请求: #58402
withoutAppends()
模型方法
新的
withoutAppends()
该方法允许您有选择地从模型实例中删除附加属性,从而提高 API 响应和数据序列化的性能:
// 删除所有附加属性$用户
->
不附加
();// 删除特定附加属性$用户
->
不附加
([
'全名'
,
'avatar_url'
]);
当您的模型包含计算成本高昂的附加属性,而这些属性并非每个用例都需要时,此功能尤其有用。现在,您无需定义多个单独的模型类或资源转换,即可根据每个请求有条件地排除附加属性。
拉取请求: #58552
类型化缓存获取器
缓存外观现在包含类型化的 getter 方法,在检索缓存值时提供类型安全性和更好的 IDE 支持:
// 获取默认值的整数$count
=
缓存
::
整数
(
'view_count'
,
0
(英文):// 获取默认字符串$名称
=
缓存
::
细绳
(
'user_name'
,
'客人'
(英文):// 获取布尔值及其默认值$isActive
=
缓存
::
布尔值
(
'feature_enabled'
,
错误的
(英文):// 获取默认值的浮点数$价格
=
缓存
::
漂浮
(
'产品价格'
,
0.0
(英文):// 获取默认数组$items
=
缓存
::
大批
(
'cart_items'
,[]);
这些方法确保类型一致性,并更清楚地表明缓存中期望的值的类型,从而减少运行时类型错误并提高代码可读性。
拉取请求: #58451
authority()
URI 方法
这
Support\Uri
课程现在包括
authority()
从 URI 中提取授权组件的方法:
$类型
=
类型
::
的
(
'https://user:pass@example.com:8080/path'
(英文):权威
=
$类型
->
权威
();
// "user:pass@example.com:8080"
URI 的授权组件包含用户信息、主机和端口,在解析或验证 URL 时非常有用。
拉取请求: #58534
缓存数组键的枚举支持
Laravel 继续扩展枚举支持,
Cache::get()
现在使用数组键时也接受枚举值:
$值
=
缓存
::
得到
([
缓存键
::
用户
,
缓存键
::
设置
]);
这是在会话和缓存方法中先前枚举支持添加的基础上实现的,为整个应用程序提供类型安全的缓存键管理。
拉取请求: #58616





