如何在chartjs laravel中foreach数据集

dauxcl2d  于 2023-10-18  发布在  Chart.js
关注(0)|答案(1)|浏览(158)

我有一个问题,我不能在laravel中循环数据集chartjs。下面是我的代码模型

  1. public function umur($tanggal)
  2. {
  3. return DB::table('riwayat')
  4. ->select('umur')
  5. ->where('tanggal_riwayat', $tanggal)
  6. ->groupBy('umur')
  7. ->get();
  8. }
  9. public function data_grafik($tanggal, $umur)
  10. {
  11. return DB::table('riwayat')
  12. ->select('hasil_keputusan', DB::raw('COUNT(id_riwayat) as jml_riwayat'))
  13. ->where('tanggal_riwayat', $tanggal)
  14. ->where('umur', $umur)
  15. ->groupBy('hasil_keputusan')
  16. ->get();
  17. }

这是我的控制器

  1. $tanggal="2022-08-10";
  2. $query = $this->m_dashboard->grafik($tanggal);
  3. $dataa = [];
  4. foreach ($query as $row) {
  5. $dataa['label'][] = $row->umur;
  6. $data_grafik=$this->m_dashboard->data_grafik($tanggal, $row->umur);
  7. foreach ($data_grafik as $value) {
  8. $dataa['label_1'][] = $value->hasil_keputusan;
  9. $dataa['jml_riwayat'][] = $value->jml_riwayat;
  10. }
  11. }
  12. $data = [
  13. 'chart_data' => json_encode($dataa),
  14. ];
  15. return view('admin.dashboard', $data);

这是我的观点

  1. var cData = JSON.parse('<?php echo $chart_data; ?>');
  2. const labels = cData.label;
  3. const data = {
  4. labels: labels,
  5. datasets: [{
  6. label: cData.label_1,
  7. backgroundColor: 'rgb(255, 99, 132)',
  8. borderColor: 'rgb(255, 99, 132)',
  9. data: cData.jml_riwayat,
  10. }
  11. ]
  12. };
  13. const config = {
  14. type: 'bar',
  15. data: data,
  16. options: {}
  17. };
  18. const myChart = new Chart(
  19. document.getElementById('myChart'),
  20. config
  21. );

这是我的输出

这就是我想要的输出

提前感谢,并为偶尔的英语错误道歉

ovfsdjhp

ovfsdjhp1#

你可以在刀片中使用@foreach ... @endforeach

  1. ...
  2. datasets: [
  3. @foreach ($contacts as $contact)
  4. {
  5. label: {{ json_encode($contact->name) }},
  6. data: {{ json_encode($contact->data) }}
  7. }
  8. @endforeach
  9. ],
  10. ...

$contact->name应该是一个类似'FirstName'的字符串。$contact->data应该是一个类似[1,2,3,4]的数组。

相关问题