婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

理論上是1年有12個(gè)月,但實(shí)際上卻是去年12個(gè)月已經(jīng)過了,是完整的12個(gè)月,今年的12個(gè)月還沒過,不完整,所以需要補(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

// 訂單總量對(duì)比
  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
  });
 
  // 支付訂單總量對(duì)比
  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
  });
 
  // 訂單總額對(duì)比
  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
  });
 
  // 支付訂單總額對(duì)比
  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; // 按時(shí)間統(tǒng)計(jì)
  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è)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《yii框架結(jié)合charjs統(tǒng)計(jì)上一年與當(dāng)前年數(shù)據(jù)的方法示例》,本文關(guān)鍵詞  yii,框架,結(jié)合,charjs,統(tǒng)計(jì),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《yii框架結(jié)合charjs統(tǒng)計(jì)上一年與當(dāng)前年數(shù)據(jù)的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于yii框架結(jié)合charjs統(tǒng)計(jì)上一年與當(dāng)前年數(shù)據(jù)的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    免费在线观看不卡| 国产精一区二区三区| 午夜电影一区二区| 激情伊人五月天久久综合| 国产不卡在线视频| 精品视频在线看| 精品久久久久香蕉网| ●精品国产综合乱码久久久久| 亚洲欧美激情视频在线观看一区二区三区| 亚洲人成在线播放网站岛国| 免费成人美女在线观看| 懂色av中文一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 欧洲av一区二区嗯嗯嗯啊| 777精品伊人久久久久大香线蕉| 日韩视频一区在线观看| 国产精品入口麻豆九色| 丝袜诱惑亚洲看片| eeuss鲁片一区二区三区在线观看| 欧美日韩免费高清一区色橹橹| 欧美成va人片在线观看| 亚洲香肠在线观看| 成人av在线资源| 日韩欧美一级二级| 亚洲一区二区四区蜜桃| 国产成人亚洲精品青草天美| 欧美区视频在线观看| 中文字幕一区av| 国产最新精品免费| 日本韩国欧美国产| 国产精品毛片久久久久久| 免费观看一级特黄欧美大片| 成人性生交大合| 日韩精品一区二区三区swag| 亚洲一区二区三区精品在线| 91小视频免费观看| 国产精品久久久久久久第一福利| 精久久久久久久久久久| 欧美伦理视频网站| 亚洲精品久久嫩草网站秘色| www.欧美日韩| 中文字幕欧美日韩一区| 精品一区二区精品| 欧美va在线播放| 青青草精品视频| 日韩亚洲欧美在线观看| 蜜桃av噜噜一区| 制服丝袜亚洲网站| 日韩专区在线视频| 日韩一区二区免费高清| 日本视频中文字幕一区二区三区| 欧美性感一区二区三区| 亚洲国产精品一区二区尤物区| 欧日韩精品视频| 亚洲永久精品大片| 欧美日韩国产乱码电影| 综合亚洲深深色噜噜狠狠网站| k8久久久一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 中文字幕欧美激情一区| 国产精品乡下勾搭老头1| 欧美国产精品v| 99re这里都是精品| 中文字幕欧美国产| 色综合久久久久久久久久久| 午夜不卡av免费| 国产女人水真多18毛片18精品视频 | 性欧美大战久久久久久久久| 久久免费精品国产久精品久久久久| 99久久久久久| 毛片av中文字幕一区二区| 成人欧美一区二区三区| 日韩一卡二卡三卡国产欧美| 91蜜桃网址入口| 韩国一区二区三区| 亚洲专区一二三| 亚洲国产精品传媒在线观看| 91精品国产aⅴ一区二区| bt欧美亚洲午夜电影天堂| 日韩精品欧美精品| 亚洲图片你懂的| 亚洲精品在线免费播放| 欧美日韩你懂得| 91福利小视频| 不卡一卡二卡三乱码免费网站| 麻豆91免费观看| 午夜不卡av免费| 一区二区三区在线观看欧美| 欧美国产成人在线| 欧美mv和日韩mv的网站| 欧美军同video69gay| 日本韩国一区二区三区| 99这里只有久久精品视频| 国产精品一品视频| 激情综合五月天| 另类小说色综合网站| 天堂av在线一区| 婷婷开心激情综合| 亚洲国产美女搞黄色| 亚洲一区二区三区四区在线免费观看| 中文字幕巨乱亚洲| 中文字幕电影一区| 国产免费成人在线视频| 国产婷婷一区二区| 久久久久久久久免费| 久久午夜电影网| 国产亚洲美州欧州综合国| 久久久久99精品一区| 精品国产亚洲在线| 久久久久久免费网| 亚洲国产岛国毛片在线| 亚洲国产精品激情在线观看| 国产精品人妖ts系列视频| 中文字幕欧美区| 亚洲欧美另类久久久精品| 亚洲免费观看在线视频| 亚洲欧美日韩中文播放| 亚洲欧洲综合另类在线| 夜夜精品视频一区二区| 亚洲小少妇裸体bbw| 日本vs亚洲vs韩国一区三区| 日韩电影一二三区| 韩国女主播成人在线观看| 国产精品一区二区视频| 不卡的电影网站| 在线看一区二区| 欧美高清精品3d| 日韩一区二区三区在线视频| 精品国产伦理网| 国产精品国产三级国产普通话三级| 亚洲欧美日韩一区二区三区在线观看| 亚洲日本在线视频观看| 亚洲成人av在线电影| 免费在线一区观看| 国产999精品久久久久久 | 国产高清成人在线| 不卡一二三区首页| 欧美精品1区2区| 精品国产自在久精品国产| 亚洲欧洲国产日本综合| 日韩高清国产一区在线| 国产东北露脸精品视频| 欧美三区在线观看| 精品日韩av一区二区| 亚洲码国产岛国毛片在线| 青青青伊人色综合久久| 成人高清在线视频| 欧美精品久久久久久久多人混战 | 欧美亚洲一区二区在线观看| 日韩一级成人av| 日韩码欧中文字| 久久99精品久久久久久动态图| 99在线精品视频| 精品日韩99亚洲| 亚洲国产精品久久人人爱蜜臀| 国产乱码精品1区2区3区| 在线观看三级视频欧美| 欧美国产精品一区二区三区| 三级欧美在线一区| 99久久精品免费观看| 精品久久久久香蕉网| 亚洲成人自拍网| 99久久免费国产| 国产日产欧美一区| 蜜臀av性久久久久蜜臀aⅴ| 色哟哟国产精品| 欧美国产日韩在线观看| 紧缚奴在线一区二区三区| 精品视频一区 二区 三区| 自拍偷自拍亚洲精品播放| 国产麻豆精品在线| 欧美精三区欧美精三区| 亚洲久草在线视频| jlzzjlzz国产精品久久| ww久久中文字幕| 久久69国产一区二区蜜臀| 欧美精品tushy高清| 亚洲自拍偷拍九九九| 91美女视频网站| 亚洲欧洲无码一区二区三区| 国产在线视频精品一区| 日韩一本二本av| 麻豆精品久久精品色综合| 7777精品伊人久久久大香线蕉| 亚洲国产精品一区二区尤物区| 色综合天天天天做夜夜夜夜做| 日日摸夜夜添夜夜添亚洲女人| 色综合中文字幕国产 | 国产一区二区三区免费观看| 91精品国产综合久久福利软件| 亚洲国产综合色| 欧美日韩精品一区二区三区| 亚洲高清免费视频| 欧美日韩国产区一| 日韩1区2区3区| 日韩欧美在线影院| 久久99久久精品| 久久在线观看免费| 国产精品91xxx| 国产精品免费观看视频|