Laravel 9.16 发布

Laravel 团队发布了 9.16,增加了的 UUID 测试助手、新的 Eloquent 方法、Pusher 的用户身份验证等:

UUID 测试助手

Tim MacDonald 为通过 Str 助手生成 UUID 贡献了额外的 UUID 测试助手。目前,您可能会首先捕获 UUID 或伪造特定的 UUID,如下所示:

$uuid = Str::uuid();
Str::createUuidsUsing(fn () => $uuid);

Str::uuid() === Str::uuid() === $uuid;

// 清理
Str::createUuidsNormally();

现在有了这个 PR,你可以做以下事情:

Str::freezeUuids();

// 示例...

Str::uuid() === Str::uuid() == $uuid;

// 清理...
Str:: createUuidsNormally();

你还可以传递一个闭包以仅在闭包期间冻结创建:

Str::freezeUuids(function ($uuid) {
    // 示例...
    Str::uuid() === Str::uuid() === $uuid;
});

您还可以返回一系列 UUID:

Str::createUuidsUsingSequence([
    $zeroth = Str::uuid(),
    $first = Str::uuid(),
]);

Str::uuid() === $zeroth;
Str::uuid() === $first;
Str::uuid(); // 返回随机 UUID

想了解更多信息并查看实现详细信息,请查看 Pull Request #42619

Eloquent withWhereHas()

@eusonlito 提供了一个 withWhereHas() 方法,该方法简化了以下情况:你必须重复使用 whereHas 进行过滤的代码,并通过 with()选择相同的记录:

CollectionModel::whereHas('products', function ($query) {
    $query->where('enabled', true)->where('sale', true);
})->with(['products' => function ($query) {
    $query->where('enabled', true)->where('sale', true);
});

使用 withWhereHas 方法,你可以围绕此用例简化代码:

CollectionModel::withWhereHas('products', fn ($query) => $query->where('enabled', true)->where('sale', true));

Pusher 的用户认证

@rennokki 为 Pusher 提供了用户身份验证:

Pusher 最近推出了一项功能,允许其用户启用连接身份验证以及通道授权: pusher.com/docs/channels/using_cha...

简而言之,该功能将确保连接到 websockets 的任何人都应该是应用程序中经过身份验证的用户,并且可以通过用户的数据库 ID 而不是通常的 Socket ID 向用户广播事件。

请参阅 Pull Request #42531 了解有关此功能的讨论和实施的更多详细信息。 此外,#PR7965 在发布时是开放的,其中包含有关如何使用此功能的更多信息。

发行说明

查看新功能和更新的完整列表以及 9.15.0 和 9.16.0 之间的差异在 GitHub。以下发行说明直接来自 changelog:

v9.16.0

新增

  • Eloquent 添加了 withWhereHas 方法(#42597)
  • Pusher 的用户认证 (#42531)
  • 添加了额外的 uuid 测试助手 (#42619)

修复

  • 修复队列通知的 ID 被覆盖(#42581)
  • 在路由中处理未定义的数组键错误 (#42606)

弃用

  • Illuminate/Routing/Redirector::home() (#42600)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-9-16-0

译文地址:https://learnku.com/laravel/t/68611

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

这速度

1年前 评论

现在laravel 出版本是有 KPI考核吗

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!