【发布时间】:2019-05-04 10:39:40
【问题描述】:
我正在尝试创建一个函数来显示一周中每一天的最佳日子。
所以说我们有:
Order::join('order_items', 'orders.id', '=', 'order_items.order_id')
->where('orders.paid', 1)
->groupBy('orders.paid_at')
->select(DB::raw(
'orders.paid_at,
DATE_FORMAT(orders.paid_at, \'%W\') AS week_day,
SUM(order_items.amount) AS amount'
))->orderBy('amount', 'DESC');
所以它最终会输出
2019-04-29, Monday, £500
2019-01-01, Tuesday, £700
2019-02-06, Wednesday, £400
2019-01-03, Thursday, £600
2019-02-15, Friday, £200
2019-04-20, Saturday, £100
2019-03-17, Sunday, £600
我当前的查询选择每个星期一、星期二、星期三,并给出每次出现的金额。
我只想显示一周中每一天的表现最好的日期(给我们 7 行)。
有没有办法围绕这个查询包装一个查询来实现这个或其他方式?
【问题讨论】:
-
您的查询对我来说似乎很好。我自己测试过,它每天只返回 7 个结果。确保您的
$this->from或$this->to变量不仅仅是空字符串,而是代表日期,例如“2019-05-04”或您将其存储在数据库中的任何格式。 -
问题是它每个星期一都会返回,例如,我只想要一周中的每一天,但数量最多的一天
-
正如我所说,如果你的 whereBetween 使用例如当前周:
['2019-04-29', '2019-05-05']那一周只包含一个星期一,所以它不可能给你两天星期一。而且,您正在计算每天的金额的总和,因此如果您只想要周一支付的最高金额,那么您应该删除总和并获得金额。 -
抱歉不清楚。它必须包括多个星期一,因为目的是显示该期间星期一产生的最多收入。
-
好的,你能用一个简单的输入来编辑你的问题吗?意思是日期,预期的输出是什么?因为至少对我来说仍然不清楚。