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

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

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

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

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

理論上是1年有12個月,但實際上卻是去年12個月已經(jīng)過了,是完整的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; // 按時間統(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)一次選擇多張圖片并預覽的方法示例
  • yii框架結(jié)合charjs實現(xiàn)統(tǒng)計30天數(shù)據(jù)的方法
  • thinkphp5 框架結(jié)合plupload實現(xiàn)圖片批量上傳功能示例
  • TP5框架實現(xiàn)上傳多張圖片的方法分析
  • Apache Shrio安全框架實現(xiàn)原理及實例詳解

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《yii框架結(jié)合charjs統(tǒ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)計上一年與當前年數(shù)據(jù)的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于yii框架結(jié)合charjs統(tǒng)計上一年與當前年數(shù)據(jù)的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩三级在线观看| 亚洲不卡在线观看| 欧美精品色一区二区三区| 国模套图日韩精品一区二区| 一区二区不卡在线播放| 亚洲伦在线观看| 色综合视频在线观看| 色婷婷精品大在线视频| 欧美偷拍一区二区| 69堂亚洲精品首页| 国产999精品久久久久久| 国产精品色噜噜| 欧美视频你懂的| 久久久久久久久一| 亚洲自拍都市欧美小说| 免费成人在线视频观看| 国产精品一区不卡| 97国产一区二区| 中文字幕一区三区| 亚洲国产日韩在线一区模特| 亚洲第一成人在线| 国产一区二区三区不卡在线观看| 日韩国产在线一| 久久精品国产成人一区二区三区| 国产河南妇女毛片精品久久久| 99免费精品在线| 精品日韩99亚洲| 亚洲六月丁香色婷婷综合久久| 久久精品国产999大香线蕉| 亚洲成人精品一区二区| 自拍偷拍欧美激情| 国产成人日日夜夜| 欧美日韩国产中文| 亚洲欧美另类在线| 精品国内片67194| 7878成人国产在线观看| 18涩涩午夜精品.www| 捆绑紧缚一区二区三区视频| 欧美午夜精品一区二区三区| 国产精品一区二区在线播放 | 亚洲欧美日韩国产综合| 国产乱人伦偷精品视频不卡| 首页综合国产亚洲丝袜| 91成人在线观看喷潮| 中文字幕不卡在线观看| 国精产品一区一区三区mba桃花| 五月天中文字幕一区二区| 大美女一区二区三区| 久久众筹精品私拍模特| 国产亚洲成年网址在线观看| 喷水一区二区三区| 欧美日韩一级视频| 亚洲人成网站精品片在线观看 | av不卡免费电影| 亚洲国产aⅴ天堂久久| 9i在线看片成人免费| 一区二区三区日本| 久久精品一区八戒影视| 制服丝袜在线91| 色www精品视频在线观看| 成人av在线网| 日本一区二区动态图| 久久亚洲一区二区三区四区| www国产成人| 欧美激情在线一区二区| 亚洲免费伊人电影| 国产福利一区二区| 在线观看亚洲a| 国产精品色哟哟网站| 免费精品视频最新在线| 91麻豆免费看片| 久久婷婷国产综合国色天香| 亚洲精品国产视频| 狠狠狠色丁香婷婷综合久久五月| 92国产精品观看| 久久这里只有精品6| 欧美aa在线视频| www.久久精品| 国产精品天天看| 国产毛片精品视频| 欧美tk—视频vk| 蜜臀99久久精品久久久久久软件| 99re这里都是精品| 欧美国产综合一区二区| 国产精品一线二线三线| 精品三级在线观看| 日本sm残虐另类| 精品国产露脸精彩对白| 国产主播一区二区三区| 日韩天堂在线观看| 高清shemale亚洲人妖| 26uuu亚洲| 中文字幕一区二区三区不卡| 国产精品综合av一区二区国产馆| 欧美老肥妇做.爰bbww视频| 精品国产乱码久久久久久夜甘婷婷| 日韩欧美激情在线| 在线区一区二视频| 91亚洲男人天堂| 国产91精品在线观看| 日本亚洲视频在线| 伊人色综合久久天天人手人婷| 国产视频911| 中文字幕制服丝袜成人av| 1区2区3区国产精品| 亚洲少妇中出一区| 亚洲成av人在线观看| 日韩一区欧美二区| 国产精品资源在线观看| 99久久精品国产一区二区三区| 91视频www| 91在线高清观看| 精品国产一区二区精华| 日韩成人av影视| 亚洲最大成人网4388xx| 日韩一区二区精品| 欧美日韩视频在线第一区| 成人黄色软件下载| 国产精品2024| 国产激情一区二区三区| 日本免费在线视频不卡一不卡二 | 日韩女优av电影| 欧美一区二区视频网站| 8x福利精品第一导航| 欧美日韩国产一级| 欧美一区二视频| 精品少妇一区二区三区日产乱码 | www.亚洲激情.com| 91蜜桃在线免费视频| 色婷婷久久综合| 国产亚洲婷婷免费| 中文字幕精品综合| 欧美喷潮久久久xxxxx| 国产精品福利一区| 欧美三级韩国三级日本三斤| 亚欧色一区w666天堂| 精品欧美久久久| 91免费国产视频网站| 天天综合天天做天天综合| 亚洲国产综合色| 精品奇米国产一区二区三区| 一区二区中文字幕在线| 日韩三级精品电影久久久| 成人国产视频在线观看| 国产精品欧美一级免费| 在线欧美日韩国产| 国产成人免费在线| 黑人巨大精品欧美一区| 亚洲国产高清在线观看视频| 色老汉av一区二区三区| 欧美丰满美乳xxx高潮www| 中文幕一区二区三区久久蜜桃| 亚洲精品国产第一综合99久久| 精品一区二区三区不卡| 欧美三级在线视频| 亚洲午夜视频在线| 欧美午夜精品一区二区三区| 中文字幕一区在线观看| 国产成人av资源| 国产精品嫩草影院com| 国产精华液一区二区三区| 日韩欧美中文字幕公布| 午夜精品久久久久影视| 欧美日韩电影在线| 日本三级韩国三级欧美三级| 欧美亚洲丝袜传媒另类| 亚洲成人av一区二区三区| 欧美三电影在线| 婷婷亚洲久悠悠色悠在线播放| 欧美日韩视频一区二区| 一区二区三区免费网站| 欧美亚洲丝袜传媒另类| 奇米精品一区二区三区在线观看| 欧美绝品在线观看成人午夜影视| 偷拍亚洲欧洲综合| 亚洲精品在线观看网站| 成人黄动漫网站免费app| 亚洲欧美在线观看| 日韩免费一区二区三区在线播放| 久久se精品一区二区| 专区另类欧美日韩| 日韩一二三四区| 一本色道久久综合亚洲精品按摩| 日韩av中文字幕一区二区| 日韩免费看的电影| 91麻豆国产精品久久| 国产麻豆视频精品| 香蕉加勒比综合久久| 中文字幕永久在线不卡| 国产视频不卡一区| 久久在线免费观看| 国产日韩欧美精品一区| 欧美一二区视频| 久久综合成人精品亚洲另类欧美| 日韩视频免费观看高清完整版| 欧美亚洲国产一区二区三区va| 91免费在线视频观看| 欧美体内she精高潮| 3751色影院一区二区三区| 在线综合视频播放|