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

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

按日期进行分组

//统计七天内注册用户数量按天进行分组
$user = DB::table('users')->whereBetween('created_at',['2018-01-01','2018-01-07'])
 ->selectRaw('date(created_at) as date,count(*) as value')
 ->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 ($date as $key => $val){
 $data[$key] = [
 'date' => $val,
 'value' => 0
 ];
 foreach ($user as $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") as date,COUNT(*) as value')
 ->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 ($month as $key => $val){
 $data[$key] = [
 'date' => $val,
 'value' => 0
 ];
 foreach ($user as $item => $value){
 if($val == $value['date']){
  $data[$key] = $value;
 }
 }
}
return $data;

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

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

use Carbon\Carbon;
 
public function getNumber()
{
  $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;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • PHP框架Laravel学习心得体会

    PHP框架Laravel学习心得体会

    Laravel是一套简洁、优雅的PHP Web开发框架 (PHP Web Framework) 。在世界(不含中国)PHP框架的占有率超过40%。下面通过本文给大家分享我的PHP框架Laravel学习心得体会,欢迎大家给我留言
    2015-10-10
  • 浅谈php中的访问修饰符private、protected、public的作用范围

    浅谈php中的访问修饰符private、protected、public的作用范围

    下面小编就为大家带来一篇浅谈php中的访问修饰符private、protected、public的作用范围。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • php使用mkdir创建多级目录入门例子

    php使用mkdir创建多级目录入门例子

    这篇文章主要介绍了php使用mkdir创建多级目录入门例子,需要的朋友可以参考下
    2014-05-05
  • yii2安装详细流程

    yii2安装详细流程

    这篇文章主要为大家详细介绍了yii2安装的完整详细流程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • safari下载文件自动加了html后缀问题

    safari下载文件自动加了html后缀问题

    这篇文章主要介绍了safari下载文件自动加了html后缀问题,本文给大家提到了下载文件的两种方法,需要的朋友可以参考下
    2018-11-11
  • PHP实现的网站目录扫描索引工具

    PHP实现的网站目录扫描索引工具

    本文给大家分享的是一个基于PHP实现的网站目录扫描索引工具的源码,非常的简单实用,有需要的小伙伴可以参考下
    2016-09-09
  • Drupal读取Excel并导入数据库实例

    Drupal读取Excel并导入数据库实例

    这篇文章主要介绍了Drupal利用PHPExcel读取Excel并导入数据库的例子,需要的朋友可以参考下
    2014-03-03
  • 浅谈discuz密码加密的方式

    浅谈discuz密码加密的方式

    这篇文章主要介绍了discuz密码加密的方式,需要的朋友可以参考下
    2014-05-05
  • thinkPHP5框架数据库连贯操作之cache()用法分析

    thinkPHP5框架数据库连贯操作之cache()用法分析

    这篇文章主要介绍了thinkPHP5框架数据库连贯操作之cache()用法,结合实例形式分析了thinkPHP5中缓存cache的应用场景及连贯操作中cache的设置、更新、删除等操作技巧,需要的朋友可以参考下
    2018-01-01
  • php-msf源码详解

    php-msf源码详解

    这篇文章主要介绍了php-msf源码的意思以及用法相关问题,有需要的朋友跟着参考学习下吧。
    2017-12-12

最新评论