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([    'alice@gmail.com',    'bob@yahoo.fr',    'carlos@gmail.com'])->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)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
