Laravel 8.69 发布
发布日期:作者: Paul Redmond
Laravel 团队发布了 8.69 版本,其中包含枚举模型转换、枚举验证规则、Str 和 Stringable 的 mask() 方法以及 v8.x 分支中的最新更改。
枚举模型转换
Mohamed Said 为模型贡献了从 PHP 8.1 开始转换为/从 枚举 的能力。
以下是从 拉取请求 测试中得到的示例
enum StringStatus: string{ case pending = 'pending'; case done = 'done';} enum IntegerStatus: int{ case pending = 1; case done = 2;} // Modelclass EloquentModelEnumCastingTestModel extends Model{ public $timestamps = false; protected $guarded = []; protected $table = 'enum_casts'; public $casts = [ 'string_status' => StringStatus::class, 'integer_status' => IntegerStatus::class, ];}
然后您可以在代码中将模型与枚举值进行比较,例如
if ($server->status == ServerStatus::provisioned){ // ...}
枚举验证规则
Mohamed Said 贡献了一个 enum
验证规则,该规则确保数据在枚举中具有相应的 value。
validator( ['status' => 'pending'], ['status' => [new Enum(ServerStatus::class)]])->validate();
在身份验证尝试期间使用回调
@Italo 贡献了在 Auth::attempt()
调用凭据数组中使用回调的能力
Auth::attempt([ function ($builder) { $builder->where('subscription_expires_at', '<', now()); }]);
对 Str 和 Stringable 的 Mask 支持
@Italo 贡献了一个 mask()
方法,该方法用重复字符掩盖字符串的一部分
// my****************** Str::mask('+56 9 87654321', '*', -8, 6);// + 56 9 ******21
自定义 Stringable 转换
Louis-Gabriel 贡献了一个自定义的 AsStringable
转换,该转换将字符串转换为 Stringable
实例
// Illuminate\Support\Stringable instance$model->title->kebab();
查看 拉取请求 #39410 以获取实现细节。
对 MariaDB 的 Skip Locked 支持
Dries Vints 为 MariaDB (MySQL) 引擎贡献了 SKIP LOCKED
支持。此更新提供了在从数据库中获取记录时跳过已锁定行的支持。
查看 拉取请求 #39396 以获取实现细节。
成功和失败命令断言
Roberto Aguilar 为测试中的命令退出代码贡献了一些便利的断言
// Before$this->artisan(FooCommand::class)->assertExitCode(0);$this->artisan(FooCommand::class)->assertExitCode(1); // Using optional convenience methods$this->artisan(FooCommand::class)->assertSuccessful();// Assert exit code !== success (0)$this->artisan(FooCommand::class)->assertFailed();
发行说明
您可以在下面查看新功能和更新的完整列表,以及 8.68.0 和 8.69.0 之间的差异。以下发行说明直接来自 变更日志
v8.69.0
新增
- 改进异常处理的内容协商 (#39385)
- 添加对 MariaDB 的 SKIP LOCKED 支持 (#39396)
- 将字符串转换为 Stringable 的自定义转换 (#39410)
- 添加
Illuminate/Support/Str::mask()
(#39393) - 允许将模型属性转换为/从枚举 (#39315)
- 添加了枚举验证规则 (#39437)
- 身份验证:允许在凭据数组中使用回调 (#39420)
- 添加了成功和失败命令断言 (#39435)
修复
更改
- 在
Illuminate/Foundation/Application::runningUnitTests()
中添加了对 env 解析的边界检查 (#39434)