Как получить категории из базы данных для старших чартов, используя codeigniter

Я пытаюсь получить категории для высоких графиков из базы данных. Категории — это просто месяцы, которые соответствуют данным на графике.

Модельная функция

function getMonthlySumOrders()
{
$this->db->select("SUM(price_each*quantity) AS sum_monthly_price, DATE_FORMAT(job.order_date, '%M') AS 'order_date', customer.company_name", false);
$this->db->join('job', 'job.job_id = job_details.job_id');
$this->db->join('customer', 'customer.company_id = job.company_id');
$this->db->where('job.company_id', '6');
$this->db->where('job.order_date >=', date("m"));
$this->db->group_by('MONTH(job.order_date)');
$this->db->order_by("job.order_date", "desc");
$this->db->limit(4);
$query = $this->db->get('job_details');

return $query->result_array();
}

контроллер

public function __construct(){
parent::__construct();
$this->load->model('customer_model');
}

function index(){

$data = $this->customer_model->getMonthlySumOrders();

foreach ($data as $order_sum_array) {
$order_sum['sum_monthly_price'][] = $order_sum_array['sum_monthly_price'];
$categories['month'][] = $order_sum_array['order_date'];
}

$order_sum_data[] = array('name' => 'Company', 'data' => $order_sum['sum_monthly_price']);
$categories_data[] = $categories['month'];
$this->view_data['order_sum_data'] = json_encode($order_sum_data, JSON_NUMERIC_CHECK);
$this->view_data['categories_data'] = json_encode($categories_data, JSON_NUMERIC_CHECK);

$this->load->view('chart', $this->view_data);
}

Посмотреть скрипт

$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Monthly Orders'
},
subtitle: {
text: ''
},
xAxis: {
categories: <?php echo $categories_data ;?>
},
yAxis: {
min: 0,
title: {
text: 'Orders'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0
}
},
credits: {
enabled: false
},
series:  <?php echo $order_sum_data ;?>
});
});
</script>

Таким образом, данные для диаграммы ‘$ order_sum_data’ работают и отображаются на диаграмме, но все категории помещаются в первую полосу диаграммы.
Если я повторяю $ order_sum_data. $ category_data я получаю:

[{"name":"Company","data":[12209.8,2490,5109,4065]}]  [["September","August","July","June"]]

Я вижу, что есть две квадратные скобки вокруг категорий, но я не знаю, как свести это к одному набору, который требуется.

Мне также требуется, чтобы название компании, которое я выбрал в своей модели, было присоединено к компоненту имени массива order_sum. Где это просто жестко закодировано как «Компания» на данный момент.

В отдельном выпуске мой запрос не будет отображать 0, если в этом конкретном месяце нет заказов, как я могу расположить оператор if для отображения столбца высоты 0, если не найдено результатов для определенного месяца с соответствующей категорией месяца?

Большое спасибо за любую помощь.

0

Решение

Категории вопроса:

  • у вас есть массив массивов: [["September","August","July","June"]], в то время как должен быть просто массив: ["September","August","July","June"]

0-значная проблема:

  • использование minPointLength опция для отображения баров, где значение = 0.

Название компании:

  • так как вы знаете, где оно жестко запрограммировано, тогда почему вы просто заменяете это значение какой-то переменной, которая будет содержать информацию о названии компании?
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]