yii框架+charjs怎样统计数据,代码是什么
导读:这篇文章主要给大家介绍“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
