首页后端开发PHPyii框架+charjs怎样统计数据,代码是什么

yii框架+charjs怎样统计数据,代码是什么

时间2024-03-22 10:33:03发布访客分类PHP浏览420
导读:这篇文章主要给大家介绍“yii框架+charjs怎样统计数据,代码是什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“yii框架+charjs怎样统计数据,代码是什么”文...
这篇文章主要给大家介绍“yii框架+charjs怎样统计数据,代码是什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“yii框架+charjs怎样统计数据,代码是什么”文章能对大家有所帮助。

yii框架结合charjs实现统计30天数据的方法,分享给大家供大家参考,具体如下:

理论上30天数据应该都有,但实际上却不一定是,所以需要补全

public static function getDayOrderCharData($days = 30) {
    
    $nowDay = date('Y-m-d', strtotime('-1day'));
     // 当前前一天
    $lastDay = date("Y-m-d", strtotime('-'.$days.'day'));
     // days天前
    $daysFormat = [];
    
    // 获取到days段的日期
    for($i = $days;
     $i >
     0;
 $i--) {
    
      $daysFormat[] = date("Y-m-d", strtotime('-'.$i.'day'));

    }
    
 
    // 所有用户
    $allOrderData = self::find()
            ->
    select(['FROM_UNIXTIME(create_at,"%Y-%m-%d") as char_time', 'COUNT(id) as total_order', 'SUM(order_amount) as total_order_amount', 'SUM(pay_amount) as total_order_pay_amount'])
            ->
    where(['>
    =', 'FROM_UNIXTIME(create_at,"%Y-%m-%d")', $lastDay])
            ->
    andWhere(['=', 'FROM_UNIXTIME(create_at,"%Y-%m-%d")', $nowDay])
            ->
    groupBy('char_time')
            ->
    all();
    
    $dayCountTitle   = Yii::t('backend', 'day_order_count_title', ['last_day' =>
     $lastDay, 'now_day' =>
     $nowDay]);
    
    $dayAmountTitle  = Yii::t('backend', 'day_order_amount_title', ['last_day' =>
     $lastDay, 'now_day' =>
     $nowDay]);
    
 
    $labels = $daysFormat;
    
    // 所有用户
    $orderCounts = [];
     // 订单数量
    $orderAmounts = [];
     // 订单金额
    $orderPayAmounts = [];
     // 支付金额
    $allOrderDataArr = [];
    
    foreach($allOrderData as $allKey =>
 $allVal) {
    
      $allOrderDataArr[$allVal->
    char_time]['char_time'] = $allVal->
    char_time;
    
      $allOrderDataArr[$allVal->
    char_time]['total_order'] = $allVal->
    total_order;
    
      $allOrderDataArr[$allVal->
    char_time]['total_order_amount'] = $allVal->
    total_order_amount;
    
      $allOrderDataArr[$allVal->
    char_time]['total_order_pay_amount'] = $allVal->
    total_order_pay_amount;

    }
    
 
    foreach($daysFormat as $key =>
 $val) {

      if(array_key_exists($val, $allOrderDataArr)) {
    
        $orderCounts[] = $allOrderDataArr[$val]['total_order'];
    
        $orderAmounts[] = $allOrderDataArr[$val]['total_order_amount'];
    
        $orderPayAmounts[] = $allOrderDataArr[$val]['total_order_pay_amount'];

      }
 else {
    
        $orderCounts[] = '0';
    
        $orderAmounts[] = '0';
    
        $orderPayAmounts[] = '0';

      }

    }
    
    $data = [
      'dayCountTitle'    =>
     $dayCountTitle, 
      'dayAmountTitle'    =>
     $dayAmountTitle,
      'orderCountLabel'   =>
     Yii::t('backend', 'day_order_count_label', ['days' =>
     $days]),
      'orderAmountLabel'   =>
     Yii::t('backend', 'day_order_amount_label', ['days' =>
     $days]),
      'orderPayAmountLabel' =>
     Yii::t('backend', 'day_order_pay_amount_label', ['days' =>
     $days]),
      'nowDay'        =>
     $nowDay,
      'lastDay'       =>
     $lastDay,
      'labels'        =>
     $labels,
      'orderCounts'     =>
     $orderCounts,
      'orderAmounts'     =>
     $orderAmounts,
      'orderPayAmounts'   =>
     $orderPayAmounts
    ];
    
    return $data;

  }


js

// 按天获取订单数量
  var dayOrderCountChartCanvas = $('#dayOrderCountChart').get(0).getContext('2d')
  var dayOrderCountChartData = {
    
   labels : ?= json_encode($dayOrderChar['labels'], true) ?>
,
   datasets: [
    {
    
     label        : '?= $dayOrderChar['orderCountLabel'] ?>
    ',
     backgroundColor   : 'rgba(0, 192, 293, 0.5)',
     data        : ?= json_encode($dayOrderChar['orderCounts'], true) ?>

    }

   ]
  }

 
  var dayOrderCountChartOptions = {

    scales: {

      xAxes: [{

        gridLines: {

          display: false
        }

      }
],
      yAxes: [{

        gridLines: {

          display: false
        }

      }
]
    }

  }

 
  var dayOrderCountChart = new Chart(dayOrderCountChartCanvas, {

    type: 'line',
    data: dayOrderCountChartData,
    options: dayOrderCountChartOptions
  }
    );

 
  // 按天获取订单及金额
  var dayOrderAmounCanvas = $('#dayOrderAmountChart').get(0).getContext('2d')
  var dayOrderAmounData = {
    
   labels : ?= json_encode($dayOrderChar['labels'], true) ?>
,
   datasets: [
    {
    
     label        : '?= $dayOrderChar['orderAmountLabel'] ?>
    ',
     backgroundColor   : 'rgba(0, 192, 293, 0.5)',
     data        : ?= json_encode($dayOrderChar['orderAmounts'], true) ?>

    }
,
    {
    
     label        : '?= $dayOrderChar['orderPayAmountLabel'] ?>
    ',
     backgroundColor   : 'rgba(0, 166, 90, 0.5)',
     data        : ?= json_encode($dayOrderChar['orderPayAmounts'], true) ?>

    }

   ]
  }

 
  var dayOrderAmounOptions = {

    scales: {

      xAxes: [{

        gridLines: {

          display: false
        }

      }
],
      yAxes: [{

        gridLines: {

          display: false
        }

      }
]
    }

  }

 
  var dayOrderAmountChart = new Chart(dayOrderAmounCanvas, {

    type: 'line',
    data: dayOrderAmounData,
    options: dayOrderAmounOptions
  }
    );
    

记住,yii的as一定要在模型利定义公用变量

public $char_time;
     // 按时间统计
  public $total_order;
     // 所有订单
  public $total_order_amount;
     // 所有订单总额
  public $total_pay_order;
     // 支付订单
  public $total_pay_amount;
     // 支付订单总额
  public $total_order_pay_amount;
     // 支付总额

到此这篇关于“yii框架+charjs怎样统计数据,代码是什么”的文章就介绍到这了,感谢各位的阅读,更多相关yii框架+charjs怎样统计数据,代码是什么内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: yii框架+charjs怎样统计数据,代码是什么
本文地址: https://pptw.com/jishu/650386.html
Python写flask文件下载接口的代码是什么 数据库专门的关系运算有哪些?

游客 回复需填写必要信息