Laravel 9.16发布

113 阅读2分钟

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

新增

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

修复了

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

废弃的

  • Illuminate/Routing/Redirector::home()(#42600)

归入。

新闻 发布

Paul Redmond

保罗-雷德蒙

全栈网络开发人员。Lumen编程指南和Docker for PHP Developers的作者。

Laravel新闻合作伙伴

  • tighten-partner.png
  • loadforge-400x100.png
  • Kirschbaum-dark.png

Laravel新闻合作伙伴

  • tighten-partner.png
  • loadforge-400x100.png
  • Kirschbaum-dark.png