以每小时 20 美元的价格聘请具备人工智能专业知识的 Laravel 开发人员。48 小时内即可开始工作。

Laravel 12.49.0 中的 `hasSole()` 集合方法

最后更新于 经过

Laravel 12.49.0 中的 `hasSole()` 集合方法(图片)

发布日期: 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
  • 已添加缺失项 @param SessionGuard 构造函数的文档( #58493
  • 将 tar 依赖项从 7.5.3 提升到 7.5.6 ( #58454

恢复:

  • 已恢复“选择数据库表达式时使用别名”功能( #58469

升级说明

对于一般应用场景,预计不会出现重大变更。升级时请查看完整的变更日志以了解详细信息。

参考

保罗·雷德蒙德照片

Laravel News 特约撰稿人。全栈 Web 开发人员兼作家。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
Laravel 代码审查

几天内即可获得 Laravel 代码审查方面的专家指导

访问 Laravel 代码审查
银行标志

银行

只需每月 3200 美元,即可聘请一位拥有 4-6 年经验的资深 Laravel 开发人员,为您的项目注入强劲动力。您将获得 160 小时的专属专业服务,并享受 15 天无风险试用。立即预约通话!

银行
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
Statamic 6 正式发布图片

Statamic 6 正式发布

阅读文章
Laravel VS Code 扩展 v1.5.0 中 Livewire 4 和 Blade 的改进

Laravel VS Code 扩展 v1.5.0 中的 Livewire 4 和 Blade 改进

阅读文章
使用微软的扩展图像在 VS Code 中直接管理 PostgreSQL 数据库

使用 Microsoft 的扩展程序直接在 VS Code 中管理 PostgreSQL 数据库

阅读文章
NativePHP 移动版现已免费图片

NativePHP 移动版现已免费

阅读文章
Laravel 的 Fuse:队列作业的断路器包

Laravel 的 Fuse:队列作业的断路器包

阅读文章
使用 Laravel TurboMaker 镜像,通过单个命令生成完整的应用程序模块

使用 Laravel TurboMaker,只需一条命令即可生成完整的应用程序模块

阅读文章