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

laravel实现按月或天或小时统计mysql数据的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-28 20:24:58 浏览: 评论:0 

今天小编就为大家分享一篇laravel实现按月或天或小时统计mysql数据的方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

在PHP里怎么比较简单的实现按时间(如按月,按天,按小时)来统计表里的数据呢?

如:要实现获取下图曲线图数据(ps:当然也可能是柱状图等,数据都是一样的),默认获取七天内的数据,点击今天,7天,15天,30天可任意切换,其中今天是按小时统计.

不过我的实现方法有一个小缺点,当某个小时内是没有数据的,那么该小时不会出现,不过这个应该可以通过前端的形式弥补

好了,废话不多说,上图上代码!

1. 控制器内容

  1. /** 
  2.  * [getsellerdata 获取某时间段内商户结算查询数据] 
  3.  * @param Request $request [description] start:起始时间 end:结束时间  
  4.  * @return [type]      [description] 
  5.  */ 
  6. public function getsellerqudata(Request $request){ 
  7.   $data = $this->dataanalysis->getSellerQuData($request->start,$request->end); 
  8.   return $data;     

2. 库文件内容

  1. /** 
  2.   * [getSellerQuData 获取商户结算数据 曲线] 
  3.   * @param [string] $start [起始时间]2017-08 
  4.   * @param [string] $end  [结束时间] 
  5.   * @return [type]    [description] 
  6.   */ 
  7.  public function getSellerQuData($name,$start,$end){ 
  8.  
  9.    //计算时间差值,以决定格式化时间格式 
  10.    $diff = strtotime($end)-strtotime($start); 
  11.  
  12.    //分组条件 1天内按小时分组,否则按天/月分组 
  13.    //86400/1天 2678400/1月 
  14.    if($diff<86400&&$diff>0){ 
  15.      $sort = '%H'
  16.    }elseif($diff<2678400){ 
  17.      $sort = '%Y-%m-%d'
  18.    }else
  19.      $sort = '%Y-%m'
  20.    } 
  21.    //把数据添加时间按格式化时间分组求和,求和分两种,一种是直接求和,一种是满足case when条件的数据求和 
  22.    $query = DB::table('user_withdrawals as w')->select(DB::raw("FROM_UNIXTIME(created_at,'{$sort}') as thedata,sum(case when w.cash_type = 1 then w.money end) as xiabi,sum(case when w.cash_type = 2 then w.money end) as online,sum(w.money) as alls"))->groupBy(DB::raw("FROM_UNIXTIME(created_at,'{$sort}')")); 
  23.  
  24.    //条件筛选 某时间段内 
  25.    if( !emptyempty($start) ){ 
  26.      $query->whereRaw('w.created_at >= ?',strtotime($start)); 
  27.    } 
  28.    if( !emptyempty($end) ){ 
  29.      $query->whereRaw('w.created_at <= ?',strtotime($end)); 
  30.    } 
  31.  
  32.    $data = $query->get(); 
  33.  
  34.    return $data
  35.  }

Tags: laravel统计mysql数据

分享到: