У меня есть ниже метод расчета каждого месяца доходов и расходов.
$query = Transaction::whereYear('date', $year)
->groupBy([DB::raw('MONTH(date)'),'type'])->get([DB::raw('MONTH(date) as month'), DB::raw('SUM(amount) as value'), 'type'])
->toJSON();
После получения данных JSON я хочу заполнить их диаграммой Морриса.
Ниже приведен формат JSON,
[{"month":11,"value":102.23,"type":"In"},{"month":11,"value":133.9,"type":"Out"}]
Однако он не соответствует формату данных Морриса. Как я могу повернуть JSON внизу?
[{ "месяц": 11, "В": 102.23, "Out": 133,9}]
$(function() {
var chart = Morris.Bar({
element: 'morris-bar-chart',
data: [0, 0],
xkey: 'Month',
ykeys: ['In', 'Out'],
labels: ['In','Out'],
hideHover: 'auto',
resize: true
});
$.ajax({
type: "GET",
dataType: 'json',
url: "./getMonthlyOverview"
})
.done(function( data ) {
chart.setData(data);
})
.fail(function() {
alert( "error occured" );
});
});
Я попытался изменить свой запрос ниже:
$stats = DB::select("select month, SUM(IF( type = 'In', amount, 0)) as Income, SUM(IF( type = 'Out', amount, 0)) as Expense from "
. "(SELECT MONTH(date) as month, type, SUM(amount) as amount FROM Transactions WHERE YEAR(date) = " . $year . " group by MONTH(date), type) as c "
. "group by month");
Не уверен, что это хорошее решение.