Вставка данных из контроллера в массив в JavaScript - PullRequest
1 голос
/ 07 мая 2019

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

Это контроллер

public function ApiLaporanBulanan()
{
    $data = DB::table("transaksipenjualan")->select(DB::raw('EXTRACT(MONTH FROM tanggaltransaksi) AS Bulan, SUM(total) as Pendapatan'))
    ->groupBy(DB::raw('EXTRACT(MONTH FROM tanggaltransaksi)'))
    ->get();
    return response()->json($data);

    //Accessing Data
    dd($data[0]->Bulan);
}

Это сценарий в поле зрения

<script>
  var url = "{{url('laporan/pendapatanAPI')}}";
  var Bulan = [];
  var Pendapatan = [];
  $(document).ready(function(){
    $.get(url, function(response){
      response.forEach(function(data){
          Bulan.push(data->Bulan);
          Pendapatan.push(data->Pendapatan);
      });
      var ctx = document.getElementById("canvas").getContext('2d');
          var myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: Bulan,
                datasets: [{
                    label: 'Nilai Pendapatan',
                    data: Pendapatan,
                    borderWidth: 1
                }]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero:true
                        }
                    }]
                }
            }
        });
    });
  });
</script>

1 Ответ

2 голосов
/ 07 мая 2019

Вы можете создать два массива в вашем контроллере.

$label = [];
$dataset = [];

и перебрать вашу коллекцию и передать данные в эти массивы

foreach($data as $value){
   $label[] = $value->data_field;
   $dataset[] = $value->data_field;
}

И передать их на блейд и назначить этимассив на ваш график

...
var myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: Bulan,
                datasets: [{
                    label: 'Nilai Pendapatan',// label data
                    data: Pendapatan, // dataset
                    borderWidth: 1
                }]
            },
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...