Laravel 9.40 发布

Laravel

Laravel 团队本周发布了9.40版本,包含了新的彩票实用类、新的验证规则、断言重定向到指定路由等等。

彩票实用类

Tim MacDonald 贡献了一个Lottery 支持类,可以在各种设置中使用,如随机数据抽样、故障报告等。

下面是一个基本API的例子:

Lottery::odds(1, 10)->choose();

// returns `true` for "win"
// returns `false` for "loss"

Lottery::odds(1, 10)
    ->winner(fn () => 'winner')
    ->loser(fn () => 'loser')
    ->choose();

// returns `"winner"` for "win"
// returns `"loser"` for "loss"

以下是来自 pull request 的一些特定于Laravel 的示例,在这个示例中,Lottery 可以与 Laravel 的其他功能一起使用。在下面的例子中,Lottery 调用链返回一个’可调用’实例,你可以在各种 Laravel 事件中注册为处理程序:

// 随机抽样,这样我们就不会淹没错误处理程序…

DB::whenQueryingForLongerThan(
    Interval::seconds(2),
    Lottery::odds(1, 100)->winner(fn () => report('DB queries exceeded 2 seconds'))
);

// 随机抽样,这样我们就不会淹没错误处理程序…

Model::handleLazyLoadingViolationUsing(Lottery::odds(1, 5000)->winner(function ($model, $relation) {
    report(new LazyLoadingViolationException($model, $relation));
}));

Laravel helpers 文档 提供了有关如何使用此类以及如何对其进行测试的示例。

model:show 命令中列出的 Eloquent 模型观察者

Mike Healy 贡献了对 model:show 命令的更新,其中列出了模型观察者对于给定模型:

model:show observers 样例

它还处理附加到同一模型操作的多个观察者。列出观察者有助于快速找到模型的列出观察者,而无需寻找服务提供商调用。

小写和大写验证规则

Tim MacDonald 提供了一个 lowercase 验证规则,它强制验证的输入是小写的。当你不想默默地将用户信息更改为小写字母,但又想确保他们只插入小写字母时,这可能很有用。例如,创建数据库用户但强制用户全部小写的输入。

Validator::make(
    ['name' => 'Admin'],3    ['name' => 'required|string|lowercase']4);

Michael Nabil 贡献了一个 uppercase 验证规则,确保给定的输入都是大写字母:

Validator::make(
    ['name' => 'ADMIN'],
    ['name' => ['required', 'string', 'uppercase']
);

断言重定向到路由

Zaher Ghaibeh 贡献了一个 assertRedirectToRoute 方法,你可以用来断言响应是否是给定命名路由的重定向:

this->get('test-route')
    ->assertRedirectToRoute('named-route');

批量静默保存模型

Niels 贡献了一个 saveManyQuietly 方法,用于静默保存多对多和一对一,或者其他关系的模型。

$model->saveManyQuietly($relatedModels);

发行说明

你可以在 GitHub 上看到以下新功能和更新的完整列表以及 9.39.0 和 9.40.0 之间的差异。以下是直接来自 changelog 的发布说明:

v9.40.0

新增

  • 在 model:show 命令中包含 Eloquent 的模型观察者 (#44884)
  • 新增 「lowercase」验证规则 (#44883)
  • 介绍 Lottery 类 (#44894)
  • 新增 /Illuminate/Testing/TestResponse::assertRedirectToRoute() (#44926)
  • 新增 uppercase 验证规则 (#44918)
  • 将 saveManyQuietly 添加到 hasOneOrMany 和 belongsToMany 模型关系 (#44913)

修复

  • 修复具有构造函数参数的类的 HasAttributes::getMutatedAttributes (#44829)

修改

  • 删除控制台的参数分配(#44888)
  • 在队列中将 $maxExceptions 从 mailable 传递给底层作业 (#44903)
  • 公开 Vite::isRunningHot (#44900)
  • 添加方法以能够覆盖异常上下文格式 (#44895)
  • 为 TrimStrings 中间件中的修剪字符添加零宽度空间 (#44906)
  • 如果 key:generate artisan 命令失败则显示错误 (#44927)
  • 更新数据库版本检查以锁定 PlanetScale (#44925)
  • 将没有 Trashed 的函数移动到 DatabaseRule (#44938)
  • 为 MySQL 和 PostgreSQL 在 Schema::getColumnListing() 和 Schema::hasTable() 上使用写连接 (#44946)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

彩票实用类,,,我刚看还以为这是啥翻译,,,然后看到代码,,, :joy:

2周前 评论
抄你码科技有限公司 1周前

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