Laravel 官方开发组本周发布了 Laravel 6.11.0 版本,新版本在 Eloquent 模型查询时新增 firstWhere
方法,优化了基于 Redis 的多频道广播,以及一些现有版本的问题修复。
我们先来看一下本次版本发布新增的功能。
1、新增功能
Eloquent firstWhere() 方法
Eloquent 模型现在支持调用 firstWhere
方法,它的功效和 where()->first()
一样,算是一个语法糖:
代码语言:javascript复制// 之前这样调用
User::where('emaill', 'foo@bar.com')->first();
// 现在可以这样调用
User::firstWhere('email', 'foo@bar.com');
需要注意的是这个方法仅仅在 Eloquent 模型查询中可用,在数据库查询构建器中不可用。
优化 Redis 多频道广播
在 Laravel 应用中,一次发送事件到多个频道很常见,目前,我们的做法是通过多个发布命令发送完全一样的负载数据到指定 Redis 服务器,这将导致不必要的数据传输,从而带来通信及性能损耗,尤其是负载数据非常大的时候。
所以,最新版本的 Laravel 优化了这个问题,在 RedisBroadcaster
中添加一段 Lua 脚本,允许一次广播数据到多个频道:
2、更新日志
接下来,我们来大致看一下此次版本更新的详细日志。
新增特性
- 新增
IlluminateDatabaseEloquentBuilder::firstWhere()
方法 - Redis 支持一次广播数据到多个频道
问题修复
- 修复
WithFaker::makeFaker()
中的未定义属性 - 修复
Str::afterLast()
方法 - 修复 PHP 7.3 插入浮点类型到 MySQL 数据库问题
- 修复通过自定义中间表属性名刷新模型问题
代码调整
- 在 Blade 模板中移除所有缩进
- 在
MailFake::assertNothingSent()
和MailFake::assertNothingQueued()
中新增可邮寄名称到断言消息 - 在
assertDatabaseHas()
中搜索类似结果