Laravel Eloquent 时间日期比较和分组
前言
最近在做一个订单日收入模块的时候,涉及到日期比较和分组查询的问题,经过一番探索,总算是找到了解决方法,特地记录一下,以方便日后翻阅。
正文
假设我们有一个orders
表,数据如下:
id | amout | created_at | updated_at |
---|---|---|---|
1 | 100 | 2019-01-01 | 2019-01-01 |
2 | 100 | 2019-01-01 | 2019-01-01 |
3 | 200 | 2019-01-02 | 2019-01-02 |
4 | 200 | 2019-01-02 | 2019-01-02 |
5 | 300 | 2019-01-03 | 2019-01-03 |
然后我们有以下需求:
- 获取每天的收入情况。
- 查询某个日期段(或者是某天)的订单,并显示各天的收入情况。
获取每天的收入情况
其实这个问题的难点就在于如何按照日期来分组,我的解决方案如下:
1 | public function getIncome(Request $request){ |
返回结果如下:
1 | [ |
获取某个日期段的各天收入情况
这里就涉及到日期比较了,因此我们可以使用whereDate
方法。
注 :
whereDate
方法只能在Laravel 5.0
之后才能使用。关于更多类似日期方法可以访问: 链接
我们需要接受两个参数:
1 | public function getIncome(Request $request){ |
返回结果:
1 | [ |
其他问题
获取当天
获取当天可以这样:
1 | Order->whereDate('created_at', date("Y-m-d")); |
满足其他条件
假设我们还要当天总收入超过多少才行,我们可以这样:
1 | $list = $list->havingRaw('SUM(amount) ' . '>' . ' ' . $minAmount); |
或者需要当订单数量超过多少:
1 | $list = $list->havingRaw('COUNT(id) ' . '>' . ' ' . $minCount); |
写在最后
当然,我这个可能不是最佳方案,如果您有更好的方法,还请多多指教。
🥳 加载 Disqus 评论