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版本中,方法名称更改为 :
如果存在范围,则模型是事实的来源,但是构建器会绕过它调用范围方法。相反,我们应该委托给模型。此PR解决了这个问题,并提供了一种可重复使用的方式来应用范围。
#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