Laravel 9.10版本发布

2023-06-01 00:00:00 laravel 版本 发布

Laravel 团队发布了 9.10,其中包含一个 findOr() Eloquent 方法、一个新的命令断言、将输入作为 Stringable 实例检索等等:


刷新数据库功能之前

Rok Sprogar 为 RefreshDatabase 特征贡献了一个 beforeRefreshingDatabase。 

这允许您在数据库开始刷新之前运行代码:

class DataExportTest extends TestCase
{
    use RefreshDatabase;
 
    protected $seed = true;
 
    protected function beforeRefreshingDatabase()
    {
        $this->artisan('db:wipe --database another-database-connection');
    }
 
    // ...
}


不期望输出命令断言

Markus Hebenstreit 贡献了一个不言自明的 

doesntExpectOutputToContain 命令断言方法:

Artisan::command('contains', function () {
    $this->line('My name is Taylor Otwell');
});
 
$this->artisan('contains')
    ->doesntExpectOutputToContain('Taylor Otwell');


Eloquent的“findOr”方法

Jess Archer 为 Eloquent 构建器和关系贡献了一个 findOr() 方法。 

此方法匹配现有的 firstOr() 方法:

User::findOr(1, fn () => throw new RuntimeException);
User::findOr(1, fn () => abort(403));
User::findOr(1, fn () => 'return something');
User::findOr(1, ['columns'], fn () => '...');
 
// Also works with relations
$user->posts()->findOr(1, fn () => '...');


可定制的编译扩展

Taylor Otwell 贡献了一个可配置的编译视图扩展,当传递到刀片编译器时,该扩展可通过视图配置进行定制:

new BladeCompiler(
    $app['files'],
    $app['config']['view.compiled'],
    $app['config']->get('view.relative_hash', false) ? $app->basePath() : '',
    $app['config']->get('view.cache', true),
    $app['config']->get('view.compiled_extension', 'php'),
);


支持“IS”和“IS NOT”PostgreSQL 运算符

Markus Koch 在使用 PostgreSQL 时为 is 和 is not 运算符提供了支持。 

有关详细信息,请参阅拉取请求 #42123。

https://github.com/laravel/framework/pull/42123


从请求中检索输入作为字符串

Cameron Wilby 和 Taylor Otwell 贡献了从请求中检索输入作为 Stringable 实例的能力:

$name = $request->string('name');
// or
$name = $request->str('name');


将作业追加和前置到现有链

Jan-Oliver Pantel 贡献了 prependToChain() 和 appendToChain 方法来追加和前置作业:

用例是每当链中的作业想要 [原文如此] 将作业排入它自己的链上,
而无需创建新的并等待“子链”的成功执行。

这在技术上已经成为可能,因为所有需要的属性和方法都是公开的。 
但是,为此具有形式化的功能可以实现更好的 DX。

有关详细信息,请参阅拉取请求 #42138。

https://github.com/laravel/framework/pull/42138


发行说明

您可以在下面查看新功能和更新的完整列表以及 GitHub 上 9.9.0 和 9.10.0 之间的差异。

以下发行说明直接来自变更日志:

https://github.com/laravel/framework/compare/v9.9.0...v9.10.0
https://github.com/laravel/framework/blob/1dd741f76d255fbc16edb0f350d6654a648ef102/CHANGELOG.md#v9100---2022-04-27


v9.10.0

添加
添加通过 MySQL 执行 upsert 时使用别名的功能 (#42053)
Illuminate/Routing/Router::middlewareGroup() 将支持中间件数组 (#42004, e6b84fb)
在 schedule:list 上添加了 Missing AsCommand 属性 (#42069)
将 beforeRefreshingDatabase 函数添加到 Testing/RefreshDatabase 特征 (#42073)
添加了 doesntExpectOutputToContain 断言方法 (#42096)
为 Eloquent 添加了 findOr 方法 (#42092)
在 Illuminate/View/Compilers/Compiler.php (68e41fd) 中允许扩展
支持 'IS' 和 'IS NOT' PostgreSQL 运算符 (#42123)
向 Illuminate/Http/Concerns/InteractsWithInput (c9d34b7) 添加了 str 和 string 方法
添加了将作业附加和前置到现有链的方法 (#42138)

修复
使不存在的作业沿着失败的路径运行而不是崩溃(#42079)
修复 schedule:work 命令 Artisan 二进制名称 (#42083)
使用非 UTF8 字符修复 TrimStrings 中间件 (#42065)
从 Request::createFrom() 中的原始请求复制 locale 和 defaultLocale (#42080)
修复 JSON 会话序列化的 ViewErrorBag (#42090)
修复 CompiledRouteCollection::getRoutesByMethod() 中缓存路由中的数组键 (#42078)
修复 JsonResponse::setData 的 json_last_error 问题 (#42125)
修复 BelongsToMany 中返回不相关行的错误 (#42087)
访问非缓存属性时修复 HasAttributes::mutateAttributeForArray (#42130)

改变了
使密码规则错误可翻译 (#42060)
重新设计 event:list 命令。 (#42068)
更改事件:列表命令 (#42084)
抛出 LostDbConnectionException 而不是 LogicException (#42102)
抛出死锁异常 (#42129)
支持嵌套 ArrayAccess 对象的 Arr::forget() (#42142)
允许 Illuminate/Collections/Enumerable::jsonSerialize() 返回其他类型 (#42133)
更新计划:列表着色输出 (#42153)

转:

https://laravel-news.com/laravel-9-10-0

相关文章