Laravel 11.15 中 Eloquent Builder 新增泛型
发表于 作者 Paul Redmond
Laravel 团队在本周发布了 v11.15,其中包括对 make:mail
命令的改进、支持使用 Resend 设置附件的 MIME 类型、数据库迁移更新等等。
在 Eloquent Builder 和关系中添加泛型
Caleb White 为 Laravel 框架贡献了 整合关系泛型的代码
泛型在 IDE 中提供了更好的自动补全和智能提示,而无需依赖 Larastan 通过使用存根来为类添加泛型。在框架中使用泛型也使得第三方包更容易在它们自定义的关系上定义内部类型。
Caleb 一直为 Larastan 做出贡献,现在他正在将它整合到框架中,从而提高 Laravel 中的静态分析!更多详情请参见 Pull Request #51851。
make:mail
创建视图的提示
使用 Christoph Rumpel 为 make:mail
命令贡献了更新,该更新会提示用户创建哪种类型的视图。
Router
可被 Tap
使 Muhammed Sari 向 Router
类添加了 Tappable
特性,允许你编写类似以下代码
class RouteRegistrar{ public function __invoke(Router $router) { $router->post('redacted', WebhookController::class) ->name('redacted'); }} $router ->tap(new Redacted1Webhooks\RouteRegistrar()) ->tap(new Redacted2Webhooks\RouteRegistrar())// ...; // In tests...protected function defineRoutes($router){ $router->tap(new \RedactedWebhooks\RouteRegistrar());}
数据库迁移更新
Hafez Divandari 贡献了有关 SQLite 和其他生活质量改进的数据库迁移更新。总而言之,Pull Request #51373 引入了以下更新
- 将 SQLite 支持扩展到 3.26+
- 在 SQLite 上添加和删除外键
- 在 SQLite 上添加和删除主键
- 保留命令的顺序
- SQLite 的蓝图状态
Resend 邮件传输中的 MIME 类型支持
Jayan Ratna 为在 Resend 可邮件类中设置附件的 MIME 类型贡献了支持。此 PR 添加了 withMime()
方法,该方法在 pull request 中进行了演示,如下所示
public function attachments(): array{ return [ Attachment::fromPath('/path/to/file') ->as('name.pdf') ->withMime('application/pdf'), ];}
发行说明
您可以在下面查看完整的最新功能和更新列表,以及 11.14.0 和 11.15.0 之间的差异。以下发行说明直接来自 变更日志
v11.15.0
- [10.x] 由 @hafezdivandari 在 https://github.com/laravel/framework/pull/51986 中将
HttpResponseException
上的先前异常设置为 - [11.x] feat: 由 @calebdw 在 https://github.com/laravel/framework/pull/51851 中向 Eloquent Builder 和关系添加泛型
- 由 @johanrosenson 在 https://github.com/laravel/framework/pull/51998 中向 Collection isEmpty 和 isNotEmpty 添加 phpstan 断言
- [11.x] 由 @jayanratna 在 https://github.com/laravel/framework/pull/52006 中添加 Resend 邮件传输中的 MIME 类型支持
- [11.x] feat: 由 @calebdw 在 https://github.com/laravel/framework/pull/52001 中向 SoftDeletes 特性添加虚拟方法
- [11.x] 由 @seriquynh 在 https://github.com/laravel/framework/pull/52000 中修复服务容器 docblock
- [10.x] 由 @paulyoungnb 在 https://github.com/laravel/framework/pull/52002 中修复 Http::retry 使其尊重调用签名 Http::retry([1,2], throw: false) 中的抛出
- [10.x] 由 @sunaoka 在 https://github.com/laravel/framework/pull/51985 中将 application_name 和字符集设置为 PostgreSQL DSN 字符串
- [11.x] 由 @seriquynh 在 https://github.com/laravel/framework/pull/52014 中修复 GeneratorCommand docblock
- [11.x] 由 @hafezdivandari 在 https://github.com/laravel/framework/pull/51373 中增强数据库迁移
- [11.x] 由 @Jubeki 在 https://github.com/laravel/framework/pull/52027 中每晚运行 MySQL 9 数据库集成测试
- [11.x] 由 @imanghafoori1 在 https://github.com/laravel/framework/pull/52033 中增强 Migrator 类的 docblock
- [11.x] 由 @seriquynh 在 https://github.com/laravel/framework/pull/52024 中对事件调度程序使用空安全运算符
- [11.x] 由 @seriquynh 在 https://github.com/laravel/framework/pull/52023 中修复 PasswordBroker 构造函数 docblock
- [11.x] 由 @lmottasin 在 https://github.com/laravel/framework/pull/52020 中向测试
testMultiplyIsLazy
添加以确保 LazyCollection 的multiply
方法的延迟行为 - [11.x] 由 @cosmastech 在 https://github.com/laravel/framework/pull/52030 中允许
MultipleInstanceManager
具有 Studly 创建者 - [11.x] 由 @cosmastech 在 https://github.com/laravel/framework/pull/52028 中向
MultipleInstanceManager
添加$config
属性 - [11.x] fix: 由 @calebdw 在 https://github.com/laravel/framework/pull/52037 中修复 findOr 和 firstOr 泛型
- [11.x] 由 @mabdullahsari 在 https://github.com/laravel/framework/pull/52051 中使
Router
Tappable
- [11.x] feat: 由 @calebdw 在 https://github.com/laravel/framework/pull/52005 中改进 Factory 泛型,向 HasFactory 添加泛型
- [11.x] 由 @christophrumpel 在 https://github.com/laravel/framework/pull/52057 中为创建邮件命令添加在名称旁边询问视图
- [11.x] 由 @siarheipashkevich 在 https://github.com/laravel/framework/pull/52063 中为
block
方法添加 @throws docblock,用于LockTimeoutException