Laravel 10.47版本发布 - 新增查询生成器whereAll()、whereAny()方法
Laravel  /  管理员 发布于 1年前   311
Laravel 团队本周发布了 v10.47版本,为查询生成器添加了 whereAll 和 whereAny 方法,
还为 Collection sortByMany 方法添加了排序标志等。
在 2024 年 3 月 12 日星期二发布 Laravel 11 之前,本周很可能是 10.x 分支的最后一次发布。
https://laravel-news.com/laravel-11
在 2024 年 8 月 6 日之前,Laravel 10 将继续收到错误修复,
在 2025 年 2 月 4 日之前,将继续收到安全修复。
新的 whereAll 和 whereAny 查询生成器方法
@musiermoore 为查询生成器贡献了新的 whereAll 和 whereAny 方法,
以及 orWhereAll 和 orWhereAny 方法。
这些新方法可以使用 or or and 逻辑对多列进行搜索
// Before using `orWhere`
User::query()
->where(function ($query) use ($search) {
$query
->where('first_name', 'LIKE', $search)
->orWhere('last_name', 'LIKE', $search)
->orWhere('email', 'LIKE', $search)
->orWhere('phone', 'LIKE', $search);
});
// Using `whereAny`
User::whereAny(
[
'first_name',
'last_name',
'email',
'phone'
],
'LIKE',
"%$search%"
);
下面是一个使用 whereAll 的示例,其中所有列都需要使用 AND 进行匹配:
$search = 'test';
User::whereAll([
'first_name',
'last_name',
'email',
], 'LIKE', "%$search%");
/*
SELECT * FROM "users" WHERE (
"first_name" LIKE "%test%"
AND "last_name" LIKE "%test%"
AND "email" LIKE "%test%"
)
*/
您可以使用 orWhereAll 和 orWhereAny 方法像这样组合多个集合。
在 sortByMany 集合上支持排序选项标志
Tim Withers 提供了向集合 sortBy 方法传递多个排序选项的功能。
在本次更新之前,您可以使用多个可调用的方法,但需要使用 PHP 的排序标志:
// Pull Request before example
$this->campaigns = $campaigns
->with('folder', 'campaignCategory')
->get()
->sortBy([
fn ($a, $b) => str($a->folder?->name)->lower() <=> str($b->folder?->name)->lower(),
fn ($a, $b) => str($a->campaignCategory->name)->lower() <=> str($b->campaignCategory->name)->lower(),
fn ($a, $b) => str($a->name)->lower() <=> str($b->name)->lower(),
])
// Using sorting flags
$this->campaigns = $campaigns
->with('folder', 'campaignCategory')
->get()
->sortBy(['folder.name', 'campaignCategory.name', 'name'], SORT_NATURAL | SORT_FLAG_CASE)
您可以从 PHP 手册中的排序函数了解更多有关排序标志的信息。
https://www.php.net/manual/en/function.sort.php
在队列监听器上设置 $failOnTimeout
Saeed Hosseini 提供了在队列作业上设置 $failOnTimeout 属性的功能,
该属性可指示作业是否会在超时时失败:
class UpdateSearchIndex implements ShouldQueue
{
public $failOnTimeout = false;
}
发布说明
您可以在 GitHub 上查看以下新功能和更新的完整列表,以及 10.46.0 和 10.47.0 之间的差异。
以下发布说明直接来自更新日志:
https://github.com/laravel/framework/compare/v10.46.0...v10.47.0
https://github.com/laravel/framework/blob/c4e8cf5d7e0a4a5f5621e979a07c1ed9167a6e33/CHANGELOG.md#v10470---2024-03-05
v10.47.0
[10.x] 允许关系键为枚举
(由 @AJenbo 在 https://github.com/laravel/framework/pull/50311 中提供
修正传递给 Str::apa() 的 "空 "字符串
(由 @tiagof 在 https://github.com/laravel/framework/pull/50335 提供
[10.x] 由 @dmyers 在 https://github.com/laravel/framework/pull/50332 修正了
邮件头文本组件不使用标记符的问题。
[10.x] 为 "Str::apa()中的空字符串 "修复添加测试,
作者:@osbre,发布于 https://github.com/laravel/framework/pull/50340
[10.x] 修复 TTL 为 0 的缓存无法过期的问题,
作者 @kayw-geek 发布于 https://github.com/laravel/framework/pull/50359
[10.x] 在队列监听器中添加超时失败功能,
作者 @saeedhosseiinii 发布于 https://github.com/laravel/framework/pull/50352
[10.x] 支持 sortByMany 集合上的排序选项标志
(由 @TWithers 发布于 https://github.com/laravel/framework/pull/50269
[10.x] 在查询生成器中添加 whereAll 和 whereAny 方法,
作者 @musiermoore,原文地址:https://github.com/laravel/framework/pull/50344
[10.x] 添加混响广播驱动程序
(由 @joedixon 发布于 https://github.com/laravel/framework/pull/50088
转:
https://laravel-news.com/laravel-10-47-0
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号