laravel实现按时间日期进行分组统计方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-14 10:20:32 浏览: 评论:0
这篇文章主要给大家介绍了关于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;
 - }
 
Tags: laravel时间日期 laravel分组统计
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
