| ID | 標題 | 價格 | 賣 |
|---|---|---|---|
| 1 | 日本書 | 150 | 55 |
| 2 | 花卉 | 75 | 0 |
| 3 | 字典 | 100 | 15 |
| 4 | 百科全書 | 250 | 10 |
這是我第一次做條形圖,我試圖在條形圖中顯示我的資料庫中的資料,但我遇到的問題是它只顯示我的資料庫中的最后一個資料,即百科全書,但我試圖顯示所有其中。我應該在下面的代碼中更改/添加什么,因為我認為我的錯誤是我的控制器中的代碼。
public function barChart(){
$data = product::all();
foreach($data as $data){
$prod_name = [$data->title];
$prod_sold = [$data->sold];
}
return view('bar-chart',compact('prod_name','prod_sold'));
}
下面是我的刀片檔案中的代碼,
<script src="https://cdnjs.com/libraries/Chart.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script>
<div class="map_canvas">
<canvas id="myChart" width="auto" height="100"></canvas>
</div>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: <?php echo json_encode($prod_name) ?>,
datasets: [{
label: '',
data: <?php echo json_encode($prod_sold); ?>,
backgroundColor: [
'rgba(31, 58, 147, 1)',
'rgba(37, 116, 169, 1)',
'rgba(92, 151, 191, 1)',
'rgb(200, 247, 197)',
'rgb(77, 175, 124)',
'rgb(30, 130, 76)'
],
borderColor: [
'rgba(31, 58, 147, 1)',
'rgba(37, 116, 169, 1)',
'rgba(92, 151, 191, 1)',
'rgb(200, 247, 197)',
'rgb(77, 175, 124)',
'rgb(30, 130, 76)'
],
borderWidth: 1
}]
},
options: {
scales: {
y: {
max: 200,
min: 0,
ticks: {
stepSize: 50
}
}
},
plugins: {
title: {
display: false,
text: 'Custom Chart Title'
},
legend: {
display: false,
}
}
}
});
</script>
uj5u.com熱心網友回復:
$prod_name和的變數$pro_sold是兩個陣列,如果我猜對了,它們包含從資料庫中獲取的資料。
所以,你犯了兩個錯誤。
- 多次將多個變數分配給一個區域變數
$prod_name,因此$prod_name只將最后一個變數存盤在回圈中。 - 如您所見,您在 foreach 回圈中初始化變數
$prod_name,$prod_sole這是一種不好的代碼實踐。您應該在 foreach 函式之外初始化它們。
檢查下面的更新代碼:
public function barChart(){
$data = product::all();
// init variable
$prod_name = array();
$prod_sold = array();
foreach($data as $data){
//append a new variable to an array
$prod_name[] = $data->title;
$prod_sold[] = $data->sold;
}
return view('bar-chart',compact('prod_name','prod_sold'));
}
uj5u.com熱心網友回復:
如果要將資料存盤到陣列中,可以將資料推送到陣列中。
$data = product::all();
// empty array declaration
$prod_name = array();
$prod_sold = array();
foreach($data as $data){
array_push($prod_name, $data->title);
array_push($prod_sold, $data->sold);
}
要檢查陣列中的內容,您可以 dd 或 echo 它。前任:
dd($prod_name);
因此,您可以將其回傳到帶有陣列變數的條形圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513537.html
下一篇:CORS預檢未成功
