Laravel 5.8.12 发布
发布于 作者 Paul Redmond
Laravel 团队昨天发布了 **第 400 个** Laravel 版本 (v5.8.12),其中包含一个新的 duplicates()
集合方法以及其他框架新功能、修复和更改。
首先,一个新的 duplicates()
方法被添加到 Illuminate\Support\Collection
类中。
collect([1,2,1,1,1])->duplicates();=> Illuminate\Support\Collection {#2938 all: [ 2 => 1, 3 => 1, 4 => 1, ], }
该方法通过返回原始集合对象中重复值的索引来工作。
$item[0] = 1 is not a duplicate$item[1] = 2 is not a duplicate$item[2] = 1 is a duplicate$item[3] = 1 is a duplicate$item[4] = 1 is a duplicate
类似地,一个新的 duplicates()
方法也被添加到 Eloquent 集合类中,使用 $model->is($another)
检查重复项。以下是一个来自 PR #28194 的示例。
use App\User; $one = User::find(1);$two = User::find(1);$three = User::find(1); $users = (new User)->newCollection([$one, $two, $three]); => Illuminate\Database\Eloquent\Collection {#2936 all: [ 1 => App\User {#2929 id: "1", name: "Admin", email: "[email protected]", email_verified_at: null, created_at: "2019-04-16 23:33:30", updated_at: "2019-04-16 23:33:30", }, 2 => App\User {#2927 id: "1", name: "Admin", email: "[email protected]", email_verified_at: null, created_at: "2019-04-16 23:33:30", updated_at: "2019-04-16 23:33:30", }, ], }
接下来,一个新的 getViews()
方法被添加到 FileViewFinder
类中,它允许您检索当前加载视图的所有视图信息。这里没有新内容,只是可以通过 getViews()
方法访问 $views
属性。
从 Laravel 5.8.11 开始,退出代码在计划任务事件中被捕获,这导致了一个新的 PR 提供了一些可用于调度器的帮助程序。
$schedule->command('my:command') ->onSuccess(function () { // do something when scheduled command ran successfully }) ->onFailure(function () { // do something when scheduled command failed }) ->pingOnSuccess('https://example.com') ->pingOnFailure('https://example.com') ->emailOnFailure('[email protected]') ;
emailOnFailure()
方法在您只想在计划任务失败时收到电子邮件时很有用,而 emailOutputTo
方法则无论计划任务的结果如何都会发送电子邮件。新的调度器方法已经添加到 调度文档 中。
接下来,SET
数据类型被添加到 MySQL 语法中 (了解更多关于 SET 类型 的信息)。
Schema::create('table_name', function (Blueprint $table) { $table->bigIncrements('id'); $table->set("field_name", [ "Possible", "Values" ]); $table->timestamps();});
此版本中的最后一个新功能是添加了 in
和 not in
运算符,它们可以作为字符串传递给查询构建器。
// these two calls produce the same query$query->where('foo', 'in', [1, 2]);$query->whereIn('foo', [1, 2]); // these two calls produce the same query$query->where('foo', 'not in', [1, 2]);$query->whereNotIn('foo', [1, 2]);
您可以查看下面的完整修复列表,以及在 GitHub 上 5.8.11 和 5.8.12 之间的完整差异。Laravel 5.8 的完整发行说明可以在 GitHub 5.8 更改日志 中找到。
v5.8.12
添加
- 添加
Illuminate\Support\Collection::duplicates()
(#28181) - 添加
Illuminate\Database\Eloquent\Collection::duplicates()
(#28194) - 添加
Illuminate\View\FileViewFinder::getViews()
(#28198) - 添加帮助程序方法
onSuccess()
\onFailure()
\pingOnSuccess()
\pingOnFailure()
\emailOnFailure()
到Illuminate\Console\Scheduling\Event
(#28167) - 添加
SET
数据类型到 MySQL 语法 (#28171) - 添加在查询构建器中使用
in
/not in
运算符的可能性 (#28192)
修复
- 修复 JOIN 查询中的内存泄漏 (#28220)
- 修复
Support\Testing\Fakes\QueueFake
中针对未定义方法的循环依赖 (#28164) - 修复
lt
\lte
\gt
\gte
验证在不同类型下的异常 (#28174) - 修复
SQL Server
的字符串引用
(#28176) - 修复
whereDay
和whereMonth
在传递int
值时的错误 (#28185)