Таблица не имеет столбцов при рисовании диаграмм Google с JSON и Laravel из базы данных MySQL

У меня такая ситуация, когда я выполняю запрос и получаю следующую таблицу из базы данных:

GRAD_ACAD, subtotal
'DOC', 79
'LIC', 1
'MTR', 6

Следуя примеру, показанному в документации, я вызываю свой контроллер в URL:

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

function drawChart() {
var jsonData = $.ajax({
url: "{{URL::route('query01')}}",
dataType:"json",
async: false
}).responseText;

// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable(jsonData);

// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, {width: 400, height: 240});

Когда я открываю вид, я получаю Таблица не имеет столбцов ошибка. Однако, используя firebug, я вижу json, который выглядит следующим образом:

[{"GRAD_ACAD":"DOC","subtotal":79},{"GRAD_ACAD":"LIC","subtotal":1},{"GRAD_ACAD":"MTR","subtotal":6}]

Я понимаю, что мне нужно указать отдельно имена столбцов и строк. Как мне это сделать? Или как мне это исправить?

0

Решение

Самый простой способ — правильно отформатировать ваш JSON в массив, тогда вы можете использовать google.visualization.arrayToDataTable

function right_format(data){
var arr = [];
for (var i = 0; i < data.length; i++) {
var element = [];
if (arr.length === 0){
var columns = Object.keys(data[i]);
arr.push(columns);
};
for (var j = 0; j < columns.length; j++){
element.push(parseFloat(data[i][columns[j]]));
};
arr.push(element);
};
return arr;

};

0

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

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