数据库查询中的非支持枚举和 Laravel 11.1 中的 withSchedule() 引导方法
最后更新于 作者 Paul Redmond
本周,Laravel 团队发布了 v11.1,其中包含 withSchedule
引导方法、查询构建器中的非支持枚举、SES 列表管理选项等等。Laravel 11.1 是本月早些时候发布的 Laravel 11 的第一个次要版本发布。
withSchedule
添加到应用程序引导
将 Nuno Maduro 为 bootstrap/app.php
文件贡献了 withSchedule
方法
->withSchedule(function ($schedule) { $schedule->command('backup:database')->daily();})
在 SES 邮件传输中添加了列表管理选项
Ariful Alam 贡献了在使用 SES 邮件传输时使用 SES 的 订阅管理 功能的能力。您可以在邮件消息的 headers()
方法中定义以下标头
/** * Get the message headers. */public function headers(): Headers{ return new Headers( text: [ 'X-Ses-List-Management-Options' => 'contactListName=MyContactList;topicName=MyTopic', ], );}
此 SES 标头会自动在您指定联系人列表和主题的每封发出的电子邮件中启用取消订阅链接。如果用户取消订阅,SES 将不允许发送电子邮件。有关更多详细信息,请参阅 Laravel 的 SES 驱动程序文档
接受数据库查询中的非支持枚举
Giorgio Balduzzi 贡献了在数据库查询中使用非支持枚举的能力。对 Eloquent 属性进行强制转换已经是可能的。但是,在查询构建器中使用非支持枚举是不可能的。
现在,您可以从 Laravel 11.1 开始将这些枚举传递给查询
enum Status{ case Active; case Archive;} class User extends Model{ protected $casts = [ 'status' => Status::class, ];} User::where('status', Status::Active)->get();User::update([ 'status' => Status::Archive]);
查询会自动将每个非支持枚举情况强制转换为 name
值。
将 Conditionable 特性添加到 Context
Michael Nabil 贡献了将 Conditionable
特性添加到 Laravel 的新的 Context Facade。这允许有条件地设置上下文,并在 false
或 true
时根据可条件化方法定义默认值
Context::when( auth()->user()->isAdmin(), fn ($context) => $context->add('user', ['key' => 'other data', ...auth()->user()]), fn ($context) => $context->add('user', auth()->user()),);
发行说明
您可以在下面查看新功能和更新的完整列表,以及 11.0.0 和 11.1.0 之间的差异。以下发行说明直接来自 变更日志
v11.1.0
- [11.x] @mwikberg-virta 在 https://github.com/laravel/framework/pull/50689 中修复了 MySQL 事务隔离级别
- [11.x] @arifszn 在 https://github.com/laravel/framework/pull/50660 中在 SES 邮件传输中添加了 ListManagementOptions
- [11.x] @gbalduzzi 在 https://github.com/laravel/framework/pull/50674 中接受数据库查询中的非支持枚举
- [11.x] @michaelnabil230 在 https://github.com/laravel/framework/pull/50707 中将
Conditionable
特性添加到Context
- [11.x] @rnambaale 在 https://github.com/laravel/framework/pull/50715 中将
[@throws](https://github.com/throws)
部分添加到 Context 的文档块中 - [11.x] @hafezdivandari 在 https://github.com/laravel/framework/pull/50708 中测试了修改可空列
- [11.x] @valorin 在 https://github.com/laravel/framework/pull/50718 中引入了 HASH_VERIFY 环境变量
- [11.x] @daniser 在 https://github.com/laravel/framework/pull/50751 中在强制转换 Unix 时间戳时应用默认时区
- [11.x] @crynobone 在 https://github.com/laravel/framework/pull/50742 中修复了
ApplicationBuilder::withCommandRouting()
的用法 - [11.x] @plumthedev 在 https://github.com/laravel/framework/pull/50738 中在应用程序启动后注册控制台命令、路径和路由
- [11.x] @jnoordsij 在 https://github.com/laravel/framework/pull/50735 中增强了格式错误的请求处理
- [11.x] @nunomaduro 在 https://github.com/laravel/framework/pull/50755 中将
withSchedule
添加到bootstrap/app.php
文件 - [11.x] @saMahmoudzadeh 在 https://github.com/laravel/framework/pull/50762 中修复了
InvalidArgumentException.php
中 create 方法的文档块 - [11.x] @abrahamgreyson 在 https://github.com/laravel/framework/pull/50766 中修复了签名错误
- [11.x] @crynobone 在 https://github.com/laravel/framework/pull/50765 中简化了
ApplicationBuilder::withSchedule()