发布日期: 2026年1月28日 Laravel 版本: 12.49.0
概括
Laravel v12.49.0 引入了一项新功能
hasSole()
用于检查集合是否恰好包含一个匹配项的集合方法,以及对列间子查询的支持、流畅的资源集合键保留,以及对维护模式命令的日期时间支持。此版本还扩展了会话和缓存组件中的枚举支持。
主要亮点包括:
- 新的
hasSole()收集方法(已弃用)containsOneItem()) - 查询构建器中列之间的子查询
preserveKeys()流畅资源收集链的方法- 日期时间值
down --retry选项 - 会话枚举支持
now()和flash()方法 - 枚举键
Cache::flexible()和withoutOverlapping() - 可搜索的提示
db:table命令 - 修复内存泄漏
Arr::dot()
什么是新的
hasSole()
领取方式
Laravel 12.49.0 添加了
hasSole()
该方法为集合提供了一种简洁的方式来检查集合中是否恰好包含一个符合指定条件的元素。此方法与 Laravel 现有的方法保持一致。
sole()
命名法并弃用旧式命名法
containsOneItem()
方法。
// 检查集合是否恰好包含一个元素$集合
->
有鞋底
();// 使用回调过滤器$集合
->
有鞋底
(
fn
($item) => $item
->
积极的);// 使用键/值对$集合
->
有鞋底
(
'地位'
,
'待办的'
(英文):// 使用运算符语法$集合
->
有鞋底
(
'年龄'
,
'>='
,
21
(英文):
该方法支持与以下相同的灵活过滤器签名:
sole()
这使得已经熟悉 Laravel 集合 API 的开发人员能够直观地使用它。
拉取请求: #58463
列间子查询
查询构建器现在支持使用以下方式将子查询结果与两个数据库列进行比较:
whereBetweenColumns()
:
$查询
->
whereBetweenColumns
($子查询, [
'min_value'
,
'max_value'
]);
这样一来,您就可以检查子查询结果是否落在表中的动态列值范围内,而不是硬编码的常量范围内。这是对之前添加静态值范围子查询支持的后续工作。
拉取请求: #58441
preserveKeys()
资源集合
这
AnonymousResourceCollection
现在包括
preserveKeys()
一种流畅的链式调用方法,无需中间变量赋值:
// 前$集合
=
Json资源
::
收藏
($posts)$集合
->
保留密钥
=
真的
;返回
集合;// 后返回
Json资源
::
收藏
($posts)
->
保留密钥
();
这一改进使资源集合配置更易读,并与 Laravel 的流畅 API 模式保持一致。
拉取请求: #58443
Down 命令的日期时间支持
这
php artisan down
命令的
--retry
现在该选项除了接受数值秒数外,还接受日期时间字符串:
# 在特定日期时间重试php
工匠
向下
--重试=
“2026-01-28 15:30:00”# 明天下午2点重试php
工匠
向下
--重试=
“明天下午2点”# 2小时后重试php
工匠
向下
--重试=
+2 小时# Unix 时间戳php
工匠
向下
--重试=
"@1735660200"
日期时间被转换为 RFC 7231 格式。
Retry-After
标题。如果提供的日期时间已过,则会显示警告,这有助于防止在维护期间出现配置错误。
拉取请求: #58509
扩展枚举支持
此版本继续完善 Laravel 的枚举集成,增加了对更多位置的支持:
会议方法:
这
now()
和
flash()
会话方法现在接受枚举值作为键,使其与其他会话方法保持一致。
拉取请求: #58459
缓存方法:
Cache::flexible()
和
Cache::withoutOverlapping()
现在接受枚举键,从而实现类型安全的缓存键管理。
拉取请求: #58444
可搜索
db:table
迅速的
这
php artisan db:table
该命令现在使用可搜索的提示符进行表选择,从而更容易在包含许多表的数据库中查找表。
拉取请求: #58442
错误修复和性能改进
错误修复:
- 修复了内存泄漏
Arr::dot()( #58458 ) - 在以下情况下使用多字节安全函数:
Str::afterLast()( #58457 ) - 并行测试后清理已编译的视图( #58440 )
- 未处理日志级别时跳过消息序列化 #58475 )
- 忽略数据库锁释放时的死锁( #58507 )
- 对于不可变的 Carbon 对象,请使用赋值而不是修改( #58498 )
改进之处:
- 为了获得更好的性能,请保留单个 NotificationSender 实例( #58452 )
- 制作
QueueFake::assertPushedTimes民众 ( #58511 ) - 增强对多个索引的索引提示验证( #58505 )
- 已添加缺失项
@paramSessionGuard 构造函数的文档( #58493 ) - 将 tar 依赖项从 7.5.3 提升到 7.5.6 ( #58454 )
恢复:
- 已恢复“选择数据库表达式时使用别名”功能( #58469 )
升级说明
对于一般应用场景,预计不会出现重大变更。升级时请查看完整的变更日志以了解详细信息。






