Прежде всего, давайте проясним немного, я вижу $kazanc_v[0]
и $kazanc_v->sub_total
это и есть объект или массив? Каков вывод этой переменной?
Также работа с таким выводом заставит вас сделать ошибку. Если вы хотите показать общее количество продаж или суммарную цену за дату, вы должны получить данные из базы данных, сгруппированные по дате.
Ваш запрос в вашей модели должен выглядеть примерно так:
//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]);
Теперь у вас есть дата (ось X) и кол-во (ось Y) для данных за 31 день в переменной $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
jsfiddle для chartjs. https://jsfiddle.net/jwf67voe/