gpt4 book ai didi

mysql - 在 Eloquent 中使用 groupBy 获取每组更多行

转载 作者:行者123 更新时间:2023-11-29 04:18:44 24 4
gpt4 key购买 nike

我正在尝试编写一个 Eloquent 查询,它每组最多返回 3 行(使用 groupBy)。 This post is similar但我不确定如何在此处应用该解决方案。

我的 MySQL 表交易有一个 Eloquent 模型 Deal。每笔交易可以有四种类型中的一种,因此最终应该最多有四组(如果没有某种类型的交易,则应该更少)。

我试过 Deal::where('status', 'active')->groupBy('type')->get(); 这会返回一个包含四个对象的数组(一个处理四种类型中的每一种),但是我期望有 12 笔交易,每组 3 笔(它们确实存在于数据库中)。同样,尝试 Deal::where('status', 'active')->groupBy('type')->take(3)->get(); 返回一个包含三个对象的数组(现在缺少一组)。

到目前为止,我已经通过进行四个单独的数据库查询来完成此操作,四种类型中的每一种查询,但如果可以一次完成,我会更喜欢它。有什么想法吗?谢谢!

最佳答案

实现目标的方法之一是:

Deal:where('status', 'active')
->get()
->groupBy('type')
->map(function($deal) {
return $deal->take(3);
});

当然,您需要检查查询是否返回nullempty 对象,请注意查询返回所有事件 Deal(s)(过滤发生在 Collection 上)如果有很多 Deal(s)

关于mysql - 在 Eloquent 中使用 groupBy 获取每组更多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com