好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > yii框架結合charjs統計上一年與當前年數據的方法示例

yii框架結合charjs統計上一年與當前年數據的方法示例

熱門標簽:重慶外呼電銷系統多少錢 南京3D地圖標注 邢臺400電話辦理 嘟嘟云外呼系統 濟源百應電銷機器人聯系方式 辦理400電話哪家好點 南寧電話外呼系統線路 咸陽電銷 正規電銷機器人系統

本文實例講述了yii框架結合charjs統計上一年與當前年數據的方法。分享給大家供大家參考,具體如下:

理論上是1年有12個月,但實際上卻是去年12個月已經過了,是完整的12個月,今年的12個月還沒過,不完整,所以需要補齊

public static function getYearOrderCharData() {
    // 獲取當前年
    $months = range(1, 12);
    $currentYear = date('Y');
    $lastYear = date('Y', strtotime("-1 year"));
    // 所有訂單
    $allOrderData = self::find()
            ->select(['FROM_UNIXTIME(create_at,"%Y-%m") as char_time', 'COUNT(id) as total_order', 'SUM(order_amount) as total_order_amount'])
            ->where(['>=', 'FROM_UNIXTIME(create_at,"%Y")', $lastYear])
            ->groupBy('char_time')
            ->all();
    // 已支付訂單
    $allPayOrderData = self::find()
            ->select(['FROM_UNIXTIME(create_at,"%Y-%m") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['>=', 'FROM_UNIXTIME(create_at,"%Y")', $lastYear])
            ->andWhere(['pay_status' => 2])
            ->groupBy('char_time')
            ->all();
    $yearCountTitle   = Yii::t('backend', 'year_order_count_title', ['last_year' => $lastYear, 'current_year' => $currentYear]);
    $yearAmountTitle  = Yii::t('backend', 'year_order_amount_title', ['last_year' => $lastYear, 'current_year' => $currentYear]);
    $yearPayCountTitle = Yii::t('backend', 'year_order_pay_count_title', ['last_year' => $lastYear, 'current_year' => $currentYear]);
    $yearPayAmountTitle = Yii::t('backend', 'year_order_pay_amount_title', ['last_year' => $lastYear, 'current_year' => $currentYear]);
 
    $labels = [];
    // 所有訂單
    $lastYearCounts = []; // 前一年月訂單總量
    $lastYearAmounts = []; // 前一年月訂單總額
    $currentYearCounts = []; // 當前年月訂單總量
    $currentYearAmounts = []; // 當前年月訂單額
    $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'] = number_format($allVal->total_order_amount / 100, 2, '.', '');
    }
 
    // 已支付訂單
    $lastYearPayCounts = []; // 前一年月支付訂單總量
    $lastYearPayAmounts = []; // 前一年月支付訂單總額
    $currentYearPayCounts = []; // 當前年月支付訂單總量
    $currentYearPayAmounts = []; // 當前年月支付訂單額
    $allPayOrderDataArr = [];
    foreach($allPayOrderData as $payKey => $payVal) {
      $allPayOrderDataArr[$payVal->char_time]['char_time'] = $payVal->char_time;
      $allPayOrderDataArr[$payVal->char_time]['total_order'] = $payVal->total_order;
      $allPayOrderDataArr[$payVal->char_time]['total_order_amount'] = number_format($payVal->total_order_amount / 100, 2, '.', '');
    }
 
    foreach($months as $key => $val) {
      $label = $val . Yii::t('backend', 'month');
      $labels[] = $label;
      $theMonth = strlen($val) == 2 ? $val : '0' . $val;
      // 上一年
      $lastYearMonth = $lastYear . '-' . $theMonth;
      if(array_key_exists($lastYearMonth, $allOrderDataArr)) {
        $lastYearCounts[] = $allOrderDataArr[$lastYearMonth]['total_order'];
        $lastYearAmounts[] = $allOrderDataArr[$lastYearMonth]['total_order_amount'];
      } else {
        $lastYearCounts[] = '0';
        $lastYearAmounts[] = '0';
      }
      if(array_key_exists($lastYearMonth, $allPayOrderDataArr)) {
        $lastYearPayCounts[] = $allPayOrderDataArr[$lastYearMonth]['total_order'];
        $lastYearPayAmounts[] = $allPayOrderDataArr[$lastYearMonth]['total_order_amount'];
      } else {
        $lastYearPayCounts[] = '0';
        $lastYearPayAmounts[] = '0';
      }
 
      // 當前年
      $currentYearMonth = $currentYear . '-' . $theMonth;
      if(array_key_exists($currentYearMonth, $allOrderDataArr)) {
        $currentYearCounts[] = $allOrderDataArr[$currentYearMonth]['total_order'];
        $currentYearAmounts[] = $allOrderDataArr[$currentYearMonth]['total_order_amount'];
      } else {
        $currentYearCounts[] = '0';
        $currentYearAmounts[] = '0';
      }
      if(array_key_exists($currentYearMonth, $allPayOrderDataArr)) {
        $currentYearPayCounts[] = $allPayOrderDataArr[$currentYearMonth]['total_order'];
        $currentYearPayAmounts[] = $allPayOrderDataArr[$currentYearMonth]['total_order_amount'];
      } else {
        $currentYearPayCounts[] = '0';
        $currentYearPayAmounts[] = '0';
      }
    }
    $data = [
      'yearCountTitle'     => $yearCountTitle,
      'yearAmountTitle'    => $yearAmountTitle,
      'yearPayCountTitle'   => $yearPayCountTitle,
      'yearPayAmountTitle'   => $yearPayAmountTitle,
      'lastYear'        => $lastYear,
      'currentYear'      => $currentYear,
      'labels'         => $labels,
      'lastYearCounts'     => $lastYearCounts,
      'lastYearAmounts'    => $lastYearAmounts,
      'currentYearCounts'   => $currentYearCounts,
      'currentYearAmounts'   => $currentYearAmounts,
      'lastYearPayCounts'   => $lastYearPayCounts,
      'lastYearPayAmounts'   => $lastYearPayAmounts,
      'currentYearPayCounts'  => $currentYearPayCounts,
      'currentYearPayAmounts' => $currentYearPayAmounts,
    ];
    return $data;
  }

js

// 訂單總量對比
  var yearOrderCountChartCanvas = $('#yearOrderCountChart').get(0).getContext('2d')
  var yearOrderCountChartData = {
   labels : ?= json_encode($orderChar['labels'], true) ?>,
   datasets: [
    {
     label        : '?= $orderChar['lastYear'] ?>',
     backgroundColor   : 'rgba(0, 192, 239, 0.5)',
     data        : ?= json_encode($orderChar['lastYearCounts'], true) ?>
    },
    {
     label        : '?= $orderChar['currentYear'] ?>',
     backgroundColor   : 'rgba(0, 135, 239, 0.5)',
     data        : ?= json_encode($orderChar['currentYearCounts'], true) ?>
    }
   ]
  }
 
  var yearOrderCountChartOptions = {
    scales: {
      xAxes: [{
        gridLines: {
          display: false
        }
      }],
      yAxes: [{
        gridLines: {
          display: false
        }
      }]
    }
  }
 
  var yearOrderCountChart = new Chart(yearOrderCountChartCanvas, {
    type: 'line',
    data: yearOrderCountChartData,
    options: yearOrderCountChartOptions
  });
 
  // 支付訂單總量對比
  var yearOrderPayCountChartCanvas = $('#yearOrderPayCountChart').get(0).getContext('2d')
  var yearOrderPayCountChartData = {
   labels : ?= json_encode($orderChar['labels'], true) ?>,
   datasets: [
    {
     label        : '?= $orderChar['lastYear'] ?>',
     backgroundColor   : 'rgba(0, 166, 90, 0.5)',
     data        : ?= json_encode($orderChar['lastYearPayCounts'], true) ?>
    },
    {
     label        : '?= $orderChar['currentYear'] ?>',
     backgroundColor   : 'rgba(0, 166, 11, 0.5)',
     data        : ?= json_encode($orderChar['currentYearPayCounts'], true) ?>
    }
   ]
  }
 
  var yearOrderPayCountChartOptions = {
    scales: {
      xAxes: [{
        gridLines: {
          display: false
        }
      }],
      yAxes: [{
        gridLines: {
          display: false
        }
      }]
    }
  }
 
  var yearOrderPayCountChart = new Chart(yearOrderPayCountChartCanvas, {
    type: 'line',
    data: yearOrderPayCountChartData,
    options: yearOrderPayCountChartOptions
  });
 
  // 訂單總額對比
  var yearOrderAmountChartCanvas = $('#yearOrderAmountChart').get(0).getContext('2d')
  var yearOrderAmountChartData = {
   labels : ?= json_encode($orderChar['labels'], true) ?>,
   datasets: [
    {
     label        : '?= $orderChar['lastYear'] ?>',
     backgroundColor   : 'rgba(0, 192, 239, 0.5)',
     data        : ?= json_encode($orderChar['lastYearAmounts'], true) ?>
    },
    {
     label        : '?= $orderChar['currentYear'] ?>',
     backgroundColor   : 'rgba(0, 135, 239, 0.5)',
     data        : ?= json_encode($orderChar['currentYearAmounts'], true) ?>
    }
   ]
  }
 
  var yearOrderAmountChartOptions = {
    scales: {
      xAxes: [{
        gridLines: {
          display: false
        }
      }],
      yAxes: [{
        gridLines: {
          display: false
        }
      }]
    }
  }
 
  var yearOrderAmountChart = new Chart(yearOrderAmountChartCanvas, {
    type: 'line',
    data: yearOrderAmountChartData,
    options: yearOrderAmountChartOptions
  });
 
  // 支付訂單總額對比
  var yearOrderPayAmountChartCanvas = $('#yearOrderPayAmountChart').get(0).getContext('2d')
  var yearOrderPayAmountChartData = {
   labels : ?= json_encode($orderChar['labels'], true) ?>,
   datasets: [
    {
     label        : '?= $orderChar['lastYear'] ?>',
     backgroundColor   : 'rgba(0, 166, 90, 0.5)',
     data        : ?= json_encode($orderChar['lastYearPayAmounts'], true) ?>
    },
    {
     label        : '?= $orderChar['currentYear'] ?>',
     backgroundColor   : 'rgba(0, 166, 11, 0.5)',
     data        : ?= json_encode($orderChar['currentYearPayAmounts'], true) ?>
    }
   ]
  }
 
  var yearOrderPayAmountChartOptions = {
    scales: {
      xAxes: [{
        gridLines: {
          display: false
        }
      }],
      yAxes: [{
        gridLines: {
          display: false
        }
      }]
    }
  }
 
  var yearOrderPayAmountChart = new Chart(yearOrderPayAmountChartCanvas, {
    type: 'line',
    data: yearOrderPayAmountChartData,
    options: yearOrderPayAmountChartOptions
  });

記住,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相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • Spring-boot結合Shrio實現JWT的方法
  • JAVA集合框架Map特性及實例解析
  • TP5框架實現一次選擇多張圖片并預覽的方法示例
  • yii框架結合charjs實現統計30天數據的方法
  • thinkphp5 框架結合plupload實現圖片批量上傳功能示例
  • TP5框架實現上傳多張圖片的方法分析
  • Apache Shrio安全框架實現原理及實例詳解

標簽:武漢 平頂山 唐山 通遼 南通 河南 隴南 黃山

巨人網絡通訊聲明:本文標題《yii框架結合charjs統計上一年與當前年數據的方法示例》,本文關鍵詞  yii,框架,結合,charjs,統計,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《yii框架結合charjs統計上一年與當前年數據的方法示例》相關的同類信息!
  • 本頁收集關于yii框架結合charjs統計上一年與當前年數據的方法示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 浪荡皇帝后宫肉H| 纯爱肉文| 久久精品亚洲牛牛影视| 十部顶级刺激电影国产| 被催眠的校花小柔h| 91巨炮在线观看| 日本免费黄色网址| Chinesehottie入口| 在线亚洲日产一区二区| 一本大道香一蕉久在线影院| 女人十八水真多毛片| 极品女教师波多野结衣33分钟| 印度性视频| 啪啪黄色小说| yyyyyy婬欲无码一二区动漫| 肥婆老熟女一区二区三区四区| 女人本色高清视频在线播放| 久久久亚洲精品一区二区三区浴池| 亚洲AV秘?无码一区宫下玲奈| 国产女人高潮抽搐视频免费观看 | 成年片色大黄全免费| 全彩成人18??H漫画入口| 人人妻人人澡人人爽人人sex性色| AAA日本高清在线播放免费观看| 被老师摁在教室cao到爽| 一级毛片女人与拘A片一| 欧美人妖xxx69| 美女班主任露出奶头喂我乳我| 亚洲欧美vr色区| 艳母动漫在线观看| 精品久久免费视频| 久久97精品久久不卡| 中文字幕第| 国产精品毛片大码女人| 天美传媒妇乱XXXXX视频| 日本www zzz免费视频| 名器肉欲1—17章| 午夜免费福利网站| 色偷偷尼玛图亚洲综合| 边摸边吃奶下面做很爽爽 什么时候上映 | 日本19禁漫画全彩无遮挡|