Laravel 7.10发布

Laravel团队发布了v7.10.0,它具有对数据库驱动程序的缓存锁定支持,同会话ID请求并发限制以及简化的真相测试断言。此外,7.10包括许多新功能,以及7.x分支中的所有最新修复和更改。

真理测试断言

Sjors Ottjes提供了一种向后兼容的方式,该方式仅使用类型提示的闭包即可编写真值测试断言:

// 前

Mail::assertQueued(SubpictureFinishedEmail::class, function (SubpictureFinishedEmail $email) use ($user) {

    return $email->user->id === $user->id;

});

// 含7.10+

Mail::assertQueued(function (SubpictureFinishedEmail $email) use ($user) {

    return $email->user->id === $user->id;

});

// 或短时间关闭

Mail::assertQueued(

  fn (SubpictureFinishedEmail $email) => $email->user->id === $user->id

);

同会话ID请求并发限制

泰勒·奥特威尔(Taylor Otwell)为会话并发贡献了一个长期要求的功能:

此PR实现了一个长期要求的功能(基本上是从Laravel的开始),用于阻止来自同一会话的并发请求,直到先前的请求完成为止。基本用例是防止并发请求将有冲突的数据写入会话,并且丢失数据。

确保检查出7.x相同会话ID请求并发限制·提取请求#32636以获取完整的解释和详细信息。

分页计数作为子查询

泰勒·奥特威尔(Taylor Otwell)将“运行分页”计数作为分组依据和拥有者的子查询进行了贡献:

使用groupBy or having 语句来扩大查询范围 是Laravel中的一个长期存在的问题,可以追溯到框架刚开始时出现了数十个已提出的问题…此解决方案是@acasar几年前提出的,但我当时已将其取消了-但说实话,我认为它比我们现在拥有的要好得多,所以我再次提出来进行考虑。

强制转换:make命令

Adrien Leloup贡献了一个 artisan make:cast 控制台命令,该命令使用演员表的名称并将其保存在中 app/Casts。它生成一个实现该CastsAttributes 接口的类 。

断言数据库计数

Christoph Rumpel为数据库表计数提供了一个测试断言:

$this->assertDatabaseCount('users', 50);

// 失败看起来像:

// "Failed asserting that table [users] matches expected entries count of 50. Entries found: 1."

SMTP邮件驱动程序的身份验证模式

@fragkp提供了一个 auth_mode SMTP驱动程序选项:

有时候,auth_mode 当您不想单独处理时,将显式设置为有用 。

可能的值有:  null,  plain, login 或 cram-md5。

将hasNamedScope添加到基本模型

Alex Bowers和Graham Campbell围绕模型范围分别提供了PR。

首先,Alex在基本模型上贡献了一个hasScope方法:

hasScope方法清除了检查范围是否以动态方式存在的情况……这种情况的用例是包含要应用的过滤器数组的请求(通过范围),代码具有更强的表现力:

public function index(Request $request)

{

    $post = Post::query();

    foreach ($request->get('filters', []) as $filter) {

        if ($post->hasNamedScope($filter)) {

            $post->{$filter}();

        }

    }

    return $post->paginate();

}

请注意,在hasNamedScope Graham的PR的最终7.10版本中,方法名称更改为 :

  1. 如果存在范围,则模型是事实的来源,但是构建器会绕过它调用范围方法。相反,我们应该委托给模型。此PR解决了这个问题,并提供了一种可重复使用的方式来应用范围。

  2. #32622添加了hasScope,但是名称hasNamedScope会更加一致,因为callScope期望可调用对象为全,而callNamedScope期望使用实际的作用域名称。

数据库缓存驱动程序的缓存锁定支持

Taylor Otwell在Symfony的锁组件PDOStore的启发下为数据库驱动程序贡献了缓存锁支持。请查看Pull Request#32639了解实现细节。

发行说明

虽然我们没有看完这篇文章中的所有新功能,但是您可以在下面看到新功能和更新的完整列表,以及GitHub上7.9.0和7.10.0之间的区别。此版本具有一些令人印象深刻的新功能!您可以在最新的v7更新日志中看到它们:

v7.10.0

添加

  • 添加的 artisan make:cast 命令(#32594)

  • 添加 (#32597)Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::assertDatabaseCount()

  • 允许为SMTP邮件驱动程序配置auth_mode(#32616)

  • hasNamedScope() 向基本模型添加了 功能(#32622,#32631)

  • 允许只做一个封闭的事实测试断言(#32626,f69ad90,22d6fca)

  • 将分页计数作为group by和haves的分组的子查询运行(#32624)

  • 在控制台计划中添加了带有输出的回调(#32633、35a7883、8d8d620)

  • 添加  了对数据库缓存驱动程序的支持(#32639,573831b)Cache::lock()

  • 相同会话ID请求并发限制(#32636)

  • 添加 skipUntil 和 skipWhile 方法到集合中(#32672,#32676)

  • 支持删除并限制sqlsrv(f16d325)

  • 新增 mergeFillable() 和 mergeGuarded() 对 Model(#32679)

固定的

  • 防止Faker发生内存泄漏(2228233)

  • 固定设置组件名称和属性(#32599,f8ff3ca)

  • 固定 (f0639fd)Illuminate\Foundation\Testing\TestResponse::assertSessionHasInput()

  • 在渴望加载的MorphTo上设置关系连接(#32602)

  • 在hasMorph() (#32614)中过滤空值 

  • 固定 (7bba4bf)Illuminate\Foundation\Console\EventMakeCommand::alreadyExists()

  • 固定 (cfc3ac9,36e215d)Illuminate\Console\Scheduling\Schedule::compileParameters()

  • 修复了(f72a166)中型号名称的错误 Illuminate\Database\Eloquent\RelationNotFoundException::make()

  • 允许通过父母丢弃的垃圾包含在许多通过查询中(#32609)

已变更

  • 已更改 (6c502c1)Illuminate/Database/Eloquent/Relations/Concerns/AsPivot::fromRawAttributes()

  • 还原所有共同关系(#32613,d82f78b,48e4d60)

  • 如果 (0557622)中的普通电子邮件为空,请使用单个空格 Illuminate\Mail\Mailer::addContent()

  • 删除在(#32646)中加载程序包清单时读取的浪费的文件 Illuminate\Foundation\PackageManifest::getManifest()

  • 不要更改, character 并且 collation 对于某些更改列(fccdf7c)

  • 解决具有多个通过/一个关系时使用表名(8d69454)

以上是 Laravel 7.10发布 的全部内容, 来源链接: utcz.com/z/358953.html

回到顶部