欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例

yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例

熱門標(biāo)簽:重慶外呼電銷系統(tǒng)多少錢 南京3D地圖標(biāo)注 邢臺400電話辦理 嘟嘟云外呼系統(tǒng) 濟(jì)源百應(yīng)電銷機(jī)器人聯(lián)系方式 辦理400電話哪家好點(diǎn) 南寧電話外呼系統(tǒng)線路 咸陽電銷 正規(guī)電銷機(jī)器人系統(tǒng)

本文實例講述了yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:

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

public static function getYearOrderCharData() {
    // 獲取當(dāng)前年
    $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 = []; // 當(dāng)前年月訂單總量
    $currentYearAmounts = []; // 當(dāng)前年月訂單額
    $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 = []; // 當(dāng)前年月支付訂單總量
    $currentYearPayAmounts = []; // 當(dāng)前年月支付訂單額
    $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';
      }
 
      // 當(dāng)前年
      $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; // 按時間統(tǒng)計
  public $total_order; // 所有訂單
  public $total_order_amount; // 所有訂單總額
  public $total_pay_order; // 支付訂單
  public $total_pay_amount; // 支付訂單總額
  public $total_order_pay_amount; // 支付總額

更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

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

標(biāo)簽:武漢 平頂山 唐山 通遼 南通 河南 隴南 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例》,本文關(guān)鍵詞  yii,框架,結(jié)合,charjs,統(tǒng)計,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    91麻豆国产在线观看| 色屁屁一区二区| 日韩欧美一区中文| 午夜精品久久久久久久久久| 日本55丰满熟妇厨房伦| 在线观看av不卡| 亚洲精品乱码久久久久久日本蜜臀| 国产91综合网| 老湿机69福利| 中文字幕亚洲不卡| 暴力调教一区二区三区| 色先锋aa成人| 一片黄亚洲嫩模| 国产精品熟妇一区二区三区四区| 欧美日韩在线精品一区二区三区激情| 亚洲乱码中文字幕综合| 古装做爰无遮挡三级聊斋艳谭| 欧美日韩午夜在线| 亚洲1区2区3区4区| 国产xxxxxxxxx| 欧美成人一区二区三区| 激情国产一区二区| 久久国产高清视频| 综合欧美亚洲日本| 国产sm在线观看| 91精品国产丝袜白色高跟鞋| 免费看欧美女人艹b| 国产精品av久久久久久无| 国产日韩欧美高清| www.成人网.com| 欧美人动与zoxxxx乱| 色综合久久综合| 亚洲欧美日韩国产一区二区三区| 91丨porny丨最新| 91精品国产入口| 久久国产日韩欧美精品| 久久99久久99精品免费看小说| 亚洲桃色在线一区| 精品人妻一区二区三区日产| 精品国内二区三区| 国产91精品露脸国语对白| 欧美无砖砖区免费| 蜜桃精品视频在线| 91插插插插插插| 亚洲国产日韩综合久久精品| 性久久久久久久久久| 欧美国产精品一区二区| 丰满人妻一区二区三区大胸| 日韩欧美成人激情| 成人在线一区二区三区| 欧美日韩夫妻久久| 国产一区二区三区精品欧美日韩一区二区三区 | 免费中文字幕av| 欧美激情一区二区三区全黄| 91同城在线观看| 日韩一级黄色片| 国产91精品久久久久久久网曝门| 欧美私人免费视频| 韩国女主播一区二区三区| 色狠狠一区二区| 日韩电影在线免费| 在线免费日韩av| 男人的j进女人的j一区| 国产精品三区在线观看| 日韩电影免费在线看| av成人免费网站| 日本不卡在线视频| 色综合天天综合在线视频| 日韩高清电影一区| 国产又爽又黄网站| 久久se这里有精品| 精品视频在线免费| 国产成人免费视频网站| 555夜色666亚洲国产免| 国产精品一区二区在线观看不卡 | 色婷婷亚洲综合| 美女国产一区二区| 欧美色视频一区| 国产精品一卡二卡在线观看| 91精品国产综合久久香蕉麻豆| 粉嫩av一区二区三区在线播放| 日韩一级片在线播放| 99亚偷拍自图区亚洲| 久久久久99精品国产片| 中文字幕第3页| 综合自拍亚洲综合图不卡区| 国内精品卡一卡二卡三| 亚洲va欧美va人人爽午夜| 成年人一级黄色片| 极品少妇xxxx精品少妇偷拍| 678五月天丁香亚洲综合网| a4yy欧美一区二区三区| 国产日韩欧美精品一区| 成都免费高清电影| 五月天激情小说综合| 在线观看日韩精品| 丁香网亚洲国际| 2022国产精品视频| 亚洲精品乱码久久久久久不卡| 一区二区三区四区国产精品| 成人免费精品动漫网站| 韩国精品在线观看| 精品欧美黑人一区二区三区| 91丨porny丨对白| 一区av在线播放| 91久久国产最好的精华液| 国产99久久久精品| 国产视频911| 性欧美精品男男| 久久精品国产亚洲5555| 欧美一区日韩一区| 91超薄肉色丝袜交足高跟凉鞋| 亚洲精品伦理在线| 在线视频一区二区免费| 成人av集中营| 一区在线中文字幕| 日本aⅴ在线观看| 成人午夜电影小说| 国产精品你懂的| 亚洲一级生活片| 盗摄精品av一区二区三区| 国产日韩欧美不卡| 国产一区二区三区视频播放| 韩国av一区二区三区四区| 久久这里只有精品6| 怡红院一区二区三区| 国内成人精品2018免费看| 久久蜜臀精品av| 手机av在线不卡| 国产成人精品三级| 国产精品久久久久久久裸模 | 久久91精品国产91久久小草| 欧美一区二区免费视频| 亚洲一区二区三区四区av| 午夜激情一区二区| 日韩视频中午一区| 亚洲第一综合网| 国产精品亚洲第一区在线暖暖韩国| 国产区在线观看成人精品| 天天看天天摸天天操| 北条麻妃一区二区三区| 一区二区三区中文字幕精品精品| 欧美日韩久久一区| 亚洲精品在线视频免费观看| 美女视频黄频大全不卡视频在线播放| 精品国产成人系列| 又嫩又硬又黄又爽的视频| 成人国产电影网| 亚洲综合丝袜美腿| 日韩三级中文字幕| 懂色av蜜桃av| 成人av网在线| 午夜日韩在线观看| 26uuu精品一区二区| 黄视频网站免费看| 中文字幕18页| 久久99精品网久久| 国产精品国模大尺度视频| 欧美三级电影网| 国产精品成人一区二区三区电影毛片| 国产在线看一区| 亚洲欧美一区二区三区极速播放 | 亚洲一区影音先锋| 欧美va天堂va视频va在线| 91久久久久久久久久久久久久| 99九九99九九九视频精品| 性感美女久久精品| 国产亚洲制服色| 在线观看视频91| 免费在线观看你懂的| 成人午夜短视频| 日韩在线a电影| 亚洲国产成人在线| 欧美顶级少妇做爰| 亚洲一级理论片| 国产精品一级无码| 狠狠狠色丁香婷婷综合久久五月| 日韩一区欧美一区| 日韩丝袜美女视频| 中文字幕在线有码| 中文字幕 亚洲一区| 成人精品鲁一区一区二区| 日日夜夜免费精品| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩不卡一区二区| 国产传媒视频在线| 污污免费在线观看| 福利一区在线观看| 日韩电影免费在线看| 亚洲视频1区2区| 久久综合狠狠综合| 欧美日韩国产区一| 潘金莲一级黄色片| 欧美熟妇精品黑人巨大一二三区| 成人激情图片网| 另类欧美日韩国产在线| 亚洲激情第一区| 国产日韩欧美高清在线| 日韩一区二区三区免费看| 91久久精品一区二区二区|