在 Laravel 11.10 中使用闭包与 updateOrInsert()
发布于 作者: Paul Redmond
本周,Laravel 团队发布了 v11.10,其中包括将回调传递给 updateOrInsert
的功能,支持使用显式路由模型绑定进行软删除模型,以及更多内容。
updateOrInsert()
允许将回调传递给 Mark Eriksson 贡献了将回调作为第二个参数传递给 updateOrInsert()
查询构建器方法的功能。在回调中,传递了布尔值 $exists
变量,以便你可以根据记录是否存在编写更新特定列的逻辑
DB::table('users')->updateOrInsert( ['user_id' => $user_id], function ($exists) use ($data) { if ($exists) { return [ 'name' => $data['name'], 'email' => $data['email'], ]; } return [ 'name' => $data['name'], 'email' => $data['email'], 'optional_column' => $data['foobar'], ]; });
查看 拉取请求 #51566 以获取完整的实现细节。
使用显式路由模型绑定时支持软删除模型
Graham Bradley 添加了使用显式路由模型绑定时对软删除模型的支持
此 PR 允许在使用 Laravel 的显式路由模型绑定功能时解析软删除模型。
它允许开发人员在处理软删除模型时使用显式路由模型绑定,而无需自定义解析逻辑。为此,它使用与隐式绑定相同的 withTrashed() 方法。
// BeforeRoute::get('/users/{user}', ...);Route::bind('user', function (string $value) { return User::where('id', $value)->withTrashed()->firstOrFail();}); // AfterRoute::get('/users/{user}', ...)->withTrashed();Route::model('user', User::class);
查看 拉取请求 #51651 以获取完整的实现细节。
允许在邮件程序配置中设置 Resend API 密钥
@riasvdv 贡献了直接在邮件程序配置中设置 Resend API 密钥,而不是只在 services
配置中设置。查看 拉取请求 #51618 以获取更多详细信息。
发布说明
你可以在下面查看完整的更新和新功能列表,以及 11.9.0 和 11.10.0 之间的差异。以下发布说明直接来自 变更日志
v11.10.0
- [11.x] 在 https://github.com/laravel/framework/pull/51643 中,由 @Henridv 修正文件名中的错别字
- [11.x] 在 https://github.com/laravel/framework/pull/51635 中,由 @riasvdv 将 Vite 自动刷新添加到错误页面
- [11.x] 在 https://github.com/laravel/framework/pull/51621 中,由 @imanghafoori1 添加了对 join_paths 的测试
- [11.x] 在 https://github.com/laravel/framework/pull/51619 中,由 @jasonmccreary 为缺少的配置文件预加载基本选项
- [11.x] 在 https://github.com/laravel/framework/pull/51579 中,由 @taka-oyama 添加了禁用基本配置合并的选项
- [11.x] 在 https://github.com/laravel/framework/pull/51566 中,由 @Markshall 允许将回调传递给
updateOrInsert()
,以在记录已存在时传递不同的$values
- [11.x] 在 https://github.com/laravel/framework/pull/51649 中,由 @imanghafoori1 修复了
join_paths
与段 '0' 相关的问题 - [11.x] 在 https://github.com/laravel/framework/pull/51670 中,由 @nicolus 删除错误页面中的多余双引号
- [11.x] 在 https://github.com/laravel/framework/pull/51666 中,由 @saMahmoudzadeh 添加测试以提高
HtmlString
的测试覆盖率 - [11.x] 在 https://github.com/laravel/framework/pull/51661 中,由 @saMahmoudzadeh 添加测试以提高
Arr::whereNotNull
的测试覆盖率 - [11.x] 在 https://github.com/laravel/framework/pull/51654 中,由 @imanghafoori1 添加了对 FileSystem 类的测试
- [11.x] 在 https://github.com/laravel/framework/pull/51667 中,由 @nathanpurcell 更新 OptimizeClearCommand.php
- [11.x] 在 https://github.com/laravel/framework/pull/51651 中,由 @gbradley 支持使用显式路由模型绑定时进行软删除模型
- [11.x] 在 https://github.com/laravel/framework/pull/51673 中,由 @saMahmoudzadeh 添加了对
Arr::divide
的测试 - [11.x] 在 https://github.com/laravel/framework/pull/51694 中,由 @riasvdv 将 Prune 设置为标志选项
- [11.x] 在 https://github.com/laravel/framework/pull/51705 中,由 @crynobone 在
app.debug
在运行时更改为true
时避免使用 Laravel 的新错误页面