首先,让我们澄清一下,我明白了$kazanc_v[0]
and $kazanc_v->sub_total
this 是对象还是数组?这个变量的输出是什么?
使用这样的输出也会迫使你犯错误。如果您想显示每个日期的销售总数或总价,您应该从数据库中获取按日期分组的数据。
您模型中的查询应该是这样的;
//in your model
$this->db->select("count(quantity) as qty, DATE(order_date) as date")
->from("orders")
->where(order_date > "2021-01-01") //beginning of this month
->group_by('date')
->get()
->result_array()
;
现在,您需要创建x-axis
第一的。
在您的情况下,一个月的总天数(我们认为是 31 天)
//in your controller
$begin = new DateTime( date('Y-m-01') ); //or given date
$end = new DateTime( date('Y-m-t') );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$dateRange = new DatePeriod($begin, $interval ,$end);
您有一个包含日期的数组,现在您可以使用来自模型的数据创建带有 y 和 x 轴的图表数据。
$chartData =[];
$kazanc = $this->some_model->some_method();
foreach($dateRange as $date){
$dataKey = array_search($date->format("Y-m-d"), array_column($kazanc, 'date'));
if ($dataKey !== false) { // if we have the data in given date
$chartData[$date->format("Y-m-d")] = $kazanc[$dataKey]['qty'];
}else {
//if there is no record, create default values
$chartData[$date->format("Y-m-d")] = 0;
}
}
//send data to view
$this->load->view('template', ["chartData" => $chartData]);
现在,您有 31 天数据的日期(x 轴)和数量(y 轴)$chartData
多变的。
最后,我们可以打印视图中的数据。根据chartjs文档,是这样的。
// in your view
var options = {
type: 'line',
data: {
labels: <?php echo json_encode(array_keys($chartData)); ?>,
datasets: [
{
label: '# Total Quantity',
data: <?php echo json_encode(array_values($chartData)); ?>,
borderWidth: 1
}
]
},
示例工作代码(php)https://www.tehplayground.com/pmiPYk3yhIpExJqa https://www.tehplayground.com/pmiPYk3yhIpExJqa
Chartjs 的 jsfiddle。https://jsfiddle.net/jwf67voe/ https://jsfiddle.net/jwf67voe/