使用laravel怎么实现按时间日期分组统计

这篇文章将为大家详细讲解有关使用laravel怎么实现按时间日期分组统计,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

按日期进行分组

使用laravel怎么实现按时间日期分组统计

//统计七天内注册用户数量按天进行分组
$user=DB::table('users')->whereBetween('created_at',['2018-01-01','2018-01-07'])
->selectRaw('date(created_at)asdate,count(*)asvalue')
->groupBy('date')->get();

#获取的用户分组数据
{
"date":"2018-01-01",#日期
"value":199#数量
{
"date":"2018-01-02",
"value":298
},
{
"date":"2018-01-03",
"value":1000
}

#在进行图表统计的时候直接从数据库取得数据有些日期可能是没有的,就需要我们手动进行补全一些日期
#计算日期内天数
$stimestamp=strtotime($start_time);
$etimestamp=strtotime($end_time);
#计算日期段内有多少天
$days=($etimestamp-$stimestamp)/86400;
#保存每天日期
$date=array();
for($i=0;$i<$days;$i++){
$date[]=date('Y-m-d',$stimestamp+(86400*$i));
}
#循环补全日期
foreach($dateas$key=>$val){
$data[$key]=[
'date'=>$val,
'value'=>0
];
foreach($useras$item=>$value){
if($val==$value['date']){
$data[$key]=$value;
}
}
}
return$data;

按月份进行分组

#统计一年内注册用户数量按月份进行分组
$user=DB::table('users')->whereBetween('created_at',['2018-01-01','2018-12-31'])
->selectRaw('DATE_FORMAT(created_at,"%Y-%m")asdate,COUNT(*)asvalue')
->groupBy('date')->get();
#获取的用户分组数据
{
"date":"2018-01",#月份
"value":1497#数量
},
{
"date":"2018-02",
"value":2354
},
{
"date":"2018-03",
"value":4560
}
#在进行图表统计的时候直接从数据库取得的数据有的月份可能是没有的,不过月份比较少可直接写死,同样也需要补全
$year=date('Y',time());
#一年的月份
$month=[
0=>$year.'-01',
1=>$year.'-02',
2=>$year.'-03',
3=>$year.'-04',
4=>$year.'-05',
5=>$year.'-06',
6=>$year.'-07',
7=>$year.'-08',
8=>$year.'-09',
9=>$year.'-10',
10=>$year.'-11',
11=>$year.'-12',
];
#循环补全月份
foreach($monthas$key=>$val){
$data[$key]=[
'date'=>$val,
'value'=>0
];
foreach($useras$item=>$value){
if($val==$value['date']){
$data[$key]=$value;
}
}
}
return$data;

laravel实现各时间段数量统计、方便直接使用

因项目中用到了图表之类的信息,需要获取到很多时间的数据动态,刚开始我都是自己换算时间来计算,后来 看到手册中有更简单的方法,自己总结了一下通用的时间段统计(今天、昨天、上周、本周、上月、本月、上年、本年)。

useCarbon\Carbon;

publicfunctiongetNumber()
{
$data=[];

#今天数据
$data['customer_today']=Customer::where('customer_type',1)->where('created_at',Carbon::today())->count();
#昨天数据
$data['customer_yesterday']=Customer::where('customer_type',1)->where('created_at',Carbon::yesterday())->count();

//本周数据
$this_week=[Carbon::now()->startOfWeek(),Carbon::now()->endOfWeek()];
$data['customer_this_week']=Customer::where('customer_type',1)->whereBetween('created_at',$this_week)->count();

//上周数据
$last_week=[Carbon::now()->startOfWeek()->subWeek(),Carbon::now()->endOfWeek()->subWeek()];
$data['customer_last_week']=Customer::where('customer_type',1)->whereBetween('created_at',$last_week)->count();

//本月数据
$data['customer_this_month']=Customer::where('customer_type',1)->whereMonth('created_at',Carbon::now()->month)->count();

//上月数据
$data['customer_last_month']=Customer::where('customer_type',1)->whereMonth('created_at',Carbon::now()->subMonth()->month)->count();

//本年数据
$data['customer_this_year']=Customer::where('customer_type',1)->whereYear('created_at',Carbon::now()->year)->count();


return$data;
}

关于使用laravel怎么实现按时间日期分组统计就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-04-15 01:56:17
收藏
分享
海报
0 条评论
170
上一篇:使用php怎么处理复杂的xml数据 下一篇:怎么在PHP中利用OB缓存实现一个静态化功能
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码