Laravel团队发布了9.16版本,增加了UUID测试助手,一个新的Eloquent方法,Pusher的用户认证,等等。
UUID测试助手
Tim MacDonald贡献了额外的UUID测试帮助器, 通过Str 帮助器来生成UUIDs.目前,你可能会先捕获一个UUID或者像这样伪造一个特定的UUID。
1$uuid = Str::uuid();2Str::createUuidsUsing(fn () => $uuid);3 4Str::uuid() === Str::uuid() === $uuid;5 6// Cleanup7Str::createUuidsNormally();
现在有了这个PR,你可以做以下事情。
1Str::freezeUuids();2 3// do stuff...4 5Str::uuid() === Str::uuid() == $uuid;6 7// cleanup...8Str:: createUuidsNormally();
你也可以传递一个闭包,只在闭包的时间内冻结创建。
1Str::freezeUuids(function ($uuid) {2 // do stuff...3 Str::uuid() === Str::uuid() === $uuid;4});
你也可以返回一个UUID的序列。
1Str::createUuidsUsingSequence([2 $zeroth = Str::uuid(),3 $first = Str::uuid(),4]);5 6Str::uuid() === $zeroth;7Str::uuid() === $first;8Str::uuid(); // back to random UUIDs
如果你想了解更多信息并查看实现细节,请查看Pull Request #42619。
Eloquent withWhereHas()
@eusonlito贡献了一个withWhereHas() 方法,简化了你必须重复使用whereHas 过滤和通过with() 选择同一记录的情况。
1CollectionModel::whereHas('products', function ($query) {2 $query->where('enabled', true)->where('sale', true);3})->with(['products' => function ($query) {4 $query->where('enabled', true)->where('sale', true);5});
使用withWhereHas 方法,你可以围绕这个用例简化你的代码。
1CollectionModel::withWhereHas('products', fn ($query) => $query->where('enabled', true)->where('sale', true));
Pusher的用户认证
@rennokki为Pusher贡献了用户认证。
Pusher最近推出了一个功能,允许他们的用户为连接启用认证,与通道授权一起: pusher.com/docs/channe…
简而言之,这个功能将确保任何连接到websockets的人都应该是应用内的认证用户。这将增加你的连接用户的信任度,你可以通过数据库ID向用户的连接广播事件,而不是通常的Socket ID。
请参阅第42531号拉动请求,以进一步了解围绕该功能的讨论和实施细节。另外,在发布时,有一个文档拉动请求是开放的,它有关于如何使用这个功能的更多信息。
发布说明
你可以在GitHub上看到以下完整的新功能和更新列表以及9.15.0和9.16.0之间的差异。下面的发行说明是直接来自于更新日志。
v9.16.0
新增
修复了
废弃的
- Illuminate/Routing/Redirector::home()(#42600)
归入。
全栈网络开发人员。Lumen编程指南和Docker for PHP Developers的作者。


