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