Вы можете просто запросить вашу базу данных, чтобы получить все необходимое количество (должно быть быстрым, если вы не запрашиваете много таблиц).
public function myControllerAction() {
$dbData = DB::selectOne('
select
(select count(*) from news) as News,
(select count(*) from events) as Events,
(select count(*) from someothertable) as Someotherdata
');
return view('my-view', compact('dbData'));
}
После этого вы можете использовать $ dbData-> News, $ dbData-> Events, $ dbData-> Someotherdata и поместите их в любое место в своем коде.
Вы даже можете упростить свою будущую разработку с помощью Collection Laravel's *.и создание готового к использованию массива для диаграмм Google:
public function myControllerAction() {
$dbData = DB::selectOne('
select
(select count(*) from news) as News,
(select count(*) from events) as Events,
(select count(*) from someothertable) as Someotherdata
');
$collection = new \Illuminate\Support\Collection($dbData);
$data = $collection->flatMap(function($value, $key) {
// We will use name of the key as the label for chart (News, Events, Someotherdata)
return [[$key, $value]];
})->toArray();
return view('my-view', compact('data'));
}
И просто используйте директиву Blade * @ json , чтобы отобразить json там, где он вам нужен:
<script>
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
// Here is the changed part, notice the @json($data) here
var data = google.visualization.arrayToDataTable(@json($data));
var options = {
title: 'My Daily Activities',
pieHole: 0.4,
};
var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
chart.draw(data, options);
}
</script>