使用laravel做后台数据统计的时候,需要查询每天的注册量之类的数据
这时候如果直接用created_at分组,是不好用的。
1、所以本文解决这个查询应该怎么写。
2、并且推荐一个时间选择插件,因为统计中一定会用到,本周数据、本月、本季度、上个月。。。。
按天分组数据:
1
2
3
4
5
6
|
Event::where( 'created_at' , '>' ,Carbon::parse( $request ->start_date)) ->where( 'created_at' , '<' ,Carbon::parse( $request ->end_date)) //两个where限制开始结束时间 ->groupBy( 'date' ) ->get([DB::raw( 'DATE(created_at) as date' ),DB::raw( 'COUNT(*) as value' )]) ->toArray(); |
如果想按小时分组所有查询出来的数据:
1
2
3
4
5
6
7
8
|
Event::where( 'created_at' , '>' ,Carbon::parse( '2017-01-01' )) ->where( 'created_at' , '<' ,Carbon::parse( '2017-11-09' )) ->groupBy( 'day' ) ->get([ //通过date_format()来格式化created_at字段 DB::raw( 'DATE_FORMAT(created_at,\'%H\') as day' ), DB::raw( 'COUNT(*) as value' )]) ->toArray() |
分享一个时间选择插件
这是官网地址
我把我改好的代码附上:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
$( function () { /*设置开始结束时间*/ var start = moment().subtract(30, 'days' ); var end = moment().subtract(-1, 'day' ); var datas = {}; /*选择之后,将时间重新赋值input*/ function cb(start, end ) { $( '#reportrange span' ).html(start.format( 'YYYY/MM/DD' ) + ' - ' + end .format( 'YYYY/MM/DD' )); } $( '#reportrange' ).daterangepicker({ startDate: start, endDate: end , /*本地化数据*/ locale: { "format" : "YYYY/MM/DD" , "separator" : " - " , "applyLabel" : "应用" , "cancelLabel" : "关闭" , "fromLabel" : "From" , "toLabel" : "至" , "customRangeLabel" : "自定义" , "weekLabel" : "W" , "daysOfWeek" : [ "Su" , "Mo" , "Tu" , "We" , "Th" , "Fr" , "Sa" ], "monthNames" : [ "一月" , "二月" , "三月" , "四月" , "五月" , "六月" , "七月" , "八月" , "九月" , "十月" , "十一月" , "十二月" ], "firstDay" : 1 }, ranges: { '今天' : [moment(), moment().subtract(-1, 'days' )], '昨天' : [moment().subtract(1, 'days' ), moment()], '前7天' : [moment().subtract(7, 'days' ), moment()], '前30天' : [moment().subtract(30, 'days' ), moment()], '本月' : [moment().startOf( 'month' ), moment().endOf( 'month' ).subtract(-1, 'day' )], '上月' : [moment().subtract(1, 'month' ).startOf( 'month' ), moment().subtract(1, 'month' ).endOf( 'month' ).subtract(-1, 'day' )], '所有' : [moment( "2017-09-25" ), moment().subtract(-1, 'days' )] } }, cb); cb(start, end ); }); |
超级好用,结合echart
在用echart的map时候,因为地图权限没有,所以要加载百度地图。这个坑另开帖子记录吧。
以上这篇laravel按天、按小时,查询数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/yushengphper/article/details/78498368