gpt4 book ai didi

php - Laravel 5.4 中的 Group By 替代方案

转载 作者:行者123 更新时间:2023-11-29 02:41:26 24 4
gpt4 key购买 nike

我有一个包含 3 列(id、ref_number、pay_date)的表 Schedule。每个 ref_number 在每个月都有一个 pay_date。所以表格看起来像这样:

id | ref_number | pay_date
-----------------------------
1 | A001 | 2018-06-29
1 | A001 | 2018-07-29
1 | A002 | 2018-06-30
1 | A002 | 2018-07-30
1 | A002 | 2018-08-30
1 | A003 | 2018-06-29

我只想为每个 ref_number 获取 pay_date 在今天和某个日期(从今天起 30 或 31 天)之间的最早记录。下面的查询在 Mysql 中运行良好(我稍后会动态传递日期)。

 SELECT id,ref_number,MIN(pay_date) FROM schedule
WHERE (pay_date BETWEEN '2018-06-30' AND '2018-07-30')
GROUP BY ref_number

我知道我们可以在数据库配置文件中将 mysql 的“strict”设置为 false,并且 Group By 会按预期运行,但无需更改是否有其他解决此问题的方法?

这个查询的 Eloquent 等效项是什么?有或没有 groupby。

最佳答案

搜索了一段时间后,我找到了使用嵌套选择 语句的答案,并在 Laravel 中尝试了一下。它完全按照我的意愿工作。这是一段甜蜜的代码:

Schedule::select(DB::raw(id, ref_number, MIN(pay_date) as pay_date))
->from(DB::raw("(SELECT *
FROM schedule
WHERE (pay_date > CURDATE()))
temp")
)
->groupBy('temp.ref_number')
->get();

关于php - Laravel 5.4 中的 Group By 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112453/

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