当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel实现按时间日期进行分组统计方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-14 10:20:32 浏览: 评论:0 

这篇文章主要给大家介绍了关于laravel如何实现按时间日期进行分组统计的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。

按日期进行分组

  1. //统计七天内注册用户数量按天进行分组 
  2. $user = DB::table('users')->whereBetween('created_at',['2018-01-01','2018-01-07']) 
  3.  ->selectRaw('date(created_at) as date,count(*) as value'
  4.  ->groupBy('date')->get(); 
  5.  
  6. #获取的用户分组数据 
  7.  "date""2018-01-01", #日期 
  8.  "value": 199  #数量 
  9.  "date""2018-01-02"
  10.  "value": 298 
  11. }, 
  12.  "date""2018-01-03"
  13.  "value": 1000 
  14.    
  15. #在进行图表统计的时候直接从数据库取得数据有些日期可能是没有的,就需要我们手动进行补全一些日期 
  16. #计算日期内天数 
  17. $stimestamp = strtotime($start_time); 
  18. $etimestamp = strtotime($end_time); 
  19. #计算日期段内有多少天 
  20. $days = ($etimestamp - $stimestamp) / 86400; 
  21. #保存每天日期 
  22. $date = array(); 
  23. for($i = 0;$i < $days;$i++){ 
  24.  $date[] = date('Y-m-d'$stimestamp + (86400 * $i)); 
  25. #循环补全日期 
  26. foreach ($date as $key => $val){ 
  27.  $data[$key] = [ 
  28.  'date' => $val
  29.  'value' => 0 
  30.  ]; 
  31.  foreach ($user as $item => $value){ 
  32.  if($val == $value['date']){ 
  33.   $data[$key] = $value
  34.  } 
  35.  } 
  36. return $data

按月份进行分组

  1. #统计一年内注册用户数量按月份进行分组 
  2. $user = DB::table('users')->whereBetween('created_at',['2018-01-01','2018-12-31']) 
  3.  ->selectRaw('DATE_FORMAT(created_at,"%Y-%m") as date,COUNT(*) as value'
  4.  ->groupBy('date')->get(); 
  5. #获取的用户分组数据 
  6.  "date""2018-01", #月份 
  7.  "value": 1497  #数量 
  8. }, 
  9.  "date""2018-02"
  10.  "value": 2354 
  11. }, 
  12.  "date""2018-03"
  13.  "value": 4560 
  14. }  
  15. #在进行图表统计的时候直接从数据库取得的数据有的月份可能是没有的,不过月份比较少可直接写死,同样也需要补全 
  16. $year = date('Y',time()); 
  17. #一年的月份 
  18. $month = [ 
  19.  0 => $year.'-01'
  20.  1 => $year.'-02'
  21.  2 => $year.'-03'
  22.  3 => $year.'-04'
  23.  4 => $year.'-05'
  24.  5 => $year.'-06'
  25.  6 => $year.'-07'
  26.  7 => $year.'-08'
  27.  8 => $year.'-09'
  28.  9 => $year.'-10'
  29.  10 => $year.'-11'
  30.  11 => $year.'-12'
  31. ]; 
  32. #循环补全月份 
  33. foreach ($month as $key => $val){ 
  34.  $data[$key] = [ 
  35.  'date' => $val
  36.  'value' => 0 
  37.  ]; 
  38.  foreach ($user as $item => $value){ 
  39.  if($val == $value['date']){ 
  40.   $data[$key] = $value
  41.  } 
  42.  } 
  43. return $data

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

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

  1. use Carbon\Carbon; 
  2.    
  3. public function getNumber() 
  4.   $data = []; 
  5.  
  6.   #今天数据 
  7.   $data['customer_today'] = Customer::where('customer_type', 1)->where('created_at', Carbon::today())->count(); 
  8.   #昨天数据 
  9.   $data['customer_yesterday'] = Customer::where('customer_type', 1)->where('created_at', Carbon::yesterday())->count(); 
  10.  
  11.   // 本周数据 
  12.   $this_week = [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()]; 
  13.   $data['customer_this_week'] = Customer::where('customer_type', 1)->whereBetween('created_at'$this_week)->count(); 
  14.  
  15.   // 上周数据 
  16.   $last_week = [Carbon::now()->startOfWeek()->subWeek(), Carbon::now()->endOfWeek()->subWeek()]; 
  17.   $data['customer_last_week'] = Customer::where('customer_type', 1)->whereBetween('created_at'$last_week)->count(); 
  18.  
  19.   // 本月数据 
  20.   $data['customer_this_month'] = Customer::where('customer_type', 1)->whereMonth('created_at', Carbon::now()->month)->count(); 
  21.  
  22.   // 上月数据 
  23.   $data['customer_last_month'] = Customer::where('customer_type', 1)->whereMonth('created_at', Carbon::now()->subMonth()->month)->count(); 
  24.  
  25.   // 本年数据 
  26.   $data['customer_this_year'] = Customer::where('customer_type', 1)->whereYear('created_at', Carbon::now()->year)->count(); 
  27.  
  28.     
  29.   return $data
  30. }

Tags: laravel时间日期 laravel分组统计

分享到: