我不知道如何正确解决这个问题,但我的问题是我无法使用 chart.js 和 laravel 在我的图表中显示我的数据。
首先,我的数据库中有一个“sales”表,它有“total”和“created_at”字段,这是我想在图表上反映的数据。
所以这是我的控制器:
public function index(Request $request){
$data = sales::select(\DB::raw("COUNT(total) as count"), \DB::raw("MONTHNAME(created_at) as month_name"),\DB::raw('max(created_at) as createdAt'))
->whereYear('created_at', date('Y'))
->groupBy('month_name')
->orderBy('createdAt')
->get();
return view('dashboards.dashboard', compact('data'));
}
接下来是我的 .js 表单:
if (jQuery("#layout1-chart1").length) {
options = {
chart: {
height: 350,
type: "candlestick"
},
colors: ["#03711a", "#FF7E41"],
series: [{
data: {
labels: yValues,
datasets:[{
label: "try",
data: xValues,
}],
},
}],
title: {
text: "$45,78956",
align: "left"
},
xaxis: {
type: "datetime"
},
yaxis: {
tooltip: {
enabled: !0
},
labels: {
offsetX: -2,
offsetY: 0,
minWidth: 30,
maxWidth: 30,
}
},
plotOptions: {
candlestick: {
colors: {
upward: '#03711a',
downward: '#32BDEA'
}
}
}
};
(chart = new ApexCharts(document.querySelector("#layout1-chart1"), options)).render()
const body = document.querySelector('body')
if (body.classList.contains('dark')) {
apexChartUpdate(chart, {
dark: true
})
}
最后,我的dashboard.blade.php
<div class="col-lg-6">
<div class="card card-block card-stretch card-height">
<div class="card-header d-flex justify-content-between">
<div class="header-title">
<h4 class="card-title">Overview</h4>
</div>
<div class="card-header-toolbar d-flex align-items-center">
<div class="dropdown">
<span class="dropdown-toggle dropdown-bg btn" id="dropdownMenuButton001"
data-toggle="dropdown">
This Month<i class="ri-arrow-down-s-line ml-1"></i>
</span>
<div class="dropdown-menu dropdown-menu-right shadow-none"
aria-labelledby="dropdownMenuButton001">
<a class="dropdown-item" href="#">Year</a>
<a class="dropdown-item" href="#">Month</a>
<a class="dropdown-item" href="#">Week</a>
</div>
</div>
</div>
</div>
<div class="card-body">
<div id="layout1-chart1"></div>
<script type="text/javascript">
var yValues = JASON.Parse('!! jason_encode($months)!!');
var xValues = JASON.Parse('!! jason_encode($monthCount)!!');
</script>
</div>
</div>
</div>
那么我应该如何从我的控制器调用我的数据并将其显示在我的图表上呢?