Laravel 5.8.22 中变形模型的急切加载关系
发布日期:作者: Paul Redmond
Laravel 团队昨天发布了 v5.8.22,其中包含一个新的 morphWith
方法,用于急切加载变形模型的关系。此版本包含许多新功能,请务必查看完整的发布说明以及以下关于一些新功能的说明。
首先,添加了一个新的 @componentFirst
指令,其工作方式类似于 @includeFirst
。
<div> @componentFirst(['missing/file', 'found/file']) @slot('title', 'Test Component') @endcomponent</div>
接下来,在您想急切加载变形模型的关系时,添加了一个新的 withMorph
方法。
$comments = Comment::query() ->with(['commentable' => function (MorphTo $morphTo) { $morphTo->morphWith([Post::class => ['user']]); }]) ->get();
我建议您查看 拉取请求 #28647 以更好地了解其工作原理。这种方法的一个好处是,它支持使用 with
来加载嵌套关系(如上例所示)。
接下来,在 Str
工具类中添加了一个新的 containsAll
方法,该方法用于确定给定字符串是否包含所有数组值。
// trueStr::containsAll('taylor otwell', ['taylor', 'otwell']); // falseStr::containsAll('taylor otwell', ['taylor', 'xxx']);
接下来,引入了维护模式命令的错误处理,如果 up 或 down 命令失败,现在将输出失败消息和退出代码 1
。
接下来,TestResponse::assertJsonValidationErrors
方法现在具有消息值断言,使您能够检查错误键和消息。
$response->assertJsonValidationErrors([ 'key' => 'validation message']);
JSON 验证错误消息仍然允许索引数组,这将断言匹配的键,以及索引数组值和键和消息关联数组的混合。
此断言还接受消息数组。
$response->assertJsonValidationErrors([ 'key' => ['validation message', 'another validation message'],]);
我还想向 Tetiana Blindaruk 表示衷心的感谢,感谢她负责 Laravel 的变更日志和版本发布。将所有合并的拉取请求和提交汇总并格式化为清晰的变更日志并非易事。感谢您,Tetiana!
您可以在下面查看完整的修复列表,以及 5.8.21 和 5.8.22 之间的全部差异。Laravel 5.8 的完整发布说明可在 GitHub 5.8 变更日志 中找到。
v5.8.22
新增
- 添加了
@componentFirst
指令 (#28783) - 添加了对类型化急切加载的支持 (#28647, d72e3cd)
- 在 Pluralizer 中添加了
Related
和Recommended
(#28749) - 添加了
Str::containsAll()
方法 (#28806) - 添加:维护模式命令的错误处理 (#28765, 9e20849)
- 在
TestResponse::assertJsonValidationErrors()
中添加了消息值断言 (#28787) - 添加:自动将 viewAny 方法绑定到索引控制器操作 (#28820)
修复
- 修复了包含 where 子句的数据库规则 (#28748)
- 修复:MorphTo 关系在触碰时忽略父级 $timestamp (#28670)
- 修复:在存在外键约束时,Sql Server 在
dropAllTables
期间出现问题 (#28750, #28770) - 修复了
Model::getConnectionName()
,当使用Model::cursor()
时 (#28804)