Laravel 5.8.3 发布
发布于 作者: Paul Redmond
Laravel 团队昨天发布了 Laravel 5.8.3,添加了 countBy()
集合方法以及一些用于 Laravel 框架类的受保护方法。
首先,Collection::countBy
方法根据谓词计算集合中项目的数量。默认情况下,该方法计算给定值的每次出现次数
collect([ 1, 2, 2, 2, 3 ])->countBy();// == collect([ 1 => 1, 2 => 3, 3 => 1 ])
countBy
方法也接受一个谓词参数
collect([])->countBy(function ($email) { return substr(strrchr($email, "@"), 1);}); // == collect([ 'gmail.com' => 2, 'yahoo.fr' => 1 ])
接下来,EloquentUserProvider
用户提供程序类有一个新的受保护的 modelQuery
方法。PR 作者的用例是在不实现 UserProvider
接口的情况下扩展基于 Eloquent 的用户提供程序。例如
<?php namespace App\Extensions; use Illuminate\Auth\EloquentUserProvider; class MyEloquentAdminProvider extends EloquentUserProvider{ protected function modelQuery($model = null) { return parent::modelQuery($model)->where('role', 'admin'); }}
接下来,在 StartSession
中间件中添加了一个受保护的 saveSession
方法,允许应用程序扩展中间件保存逻辑而无需覆盖整个 handle()
方法。
saveSession()
方法也接受一个 $request
参数,以防您覆盖此方法并需要访问请求。
此版本中的最后一个添加项是允许 Model::belongsToMany
使用模型/枢纽类名称作为第二个参数接受非硬编码的枢纽表名称
return $this->belongsToMany(Profile::class, CustomerProfile::class);
您可以在下面查看完整的修复列表,以及在 GitHub 上 5.8.2 和 5.8.3 之间的整个差异。Laravel 5.7 的完整发行说明可在 GitHub 的 5.8 变更日志 中找到
v5.8.3
已添加
- 已添加
Collection::countBy
(#27770) - 已添加受保护的
EloquentUserProvider::newModelQuery()
(#27734, 9bb7685) - 已添加受保护的
StartSession::saveSession()
方法 (#27771, 76c7126) - 允许
belongsToMany
使用Model/Pivot
类名称作为第二个参数 (#27774)
已修复
- 已修复环境变量解析 (#27706)
- 已修复使用
Gate::forUser
时猜测的策略名称 (#27708) - 已修复
Notification
中的via
作为string
(#27710) - 已修复
StartSession
中间件 (499e4fe) - 已修复与
level
相关的stack
频道的错误 (#27726, bc884bb) - 已修复非字符串值的
email
验证 (#27735)
已更改
- 在检查
MessageBag
中是否存在键之前,检查MessageBag
是否为空 (#27719)