[英]Using chart.js with laravel passing data from controller to view
嘗試在我的laravel應用中利用chart.js。 在我的控制器中,我正在使用Eloquent來執行數據庫的簡單查詢:
//sampleController.php
public function test()
{
$inventories = Inventory::all();
$dates = $inventories->lists('updated_at');
$totals = $inventories->lists('item_4801');
return view('pages.test')
->with('dates')
->with('totals');
}
我將“日期”和“總計”傳遞給我的觀點:
//test.blade.php
@extends('app')
@section('content')
<canvas id="myChart" width="400" height="400"></canvas>
@stop
@section('footer')
<script src="assets/admin/js/Chart.min.js"></script>
<script>
var ctx = document.getElementById("myChart").getContext("2d");
var data = {
labels: {!! json_encode($dates) !!},
datasets: [
{
label: "My Data",
data: {!! json_encode($totals) !!}
}
]
};
var myLineChart = new Chart(ctx).Line(data);
</script>
@stop
這行不通。 圖表占位符顯示出來,但似乎數據被讀取為空。 我猜我只是沒有以正確的格式傳遞數據,但不確定確切如何做。 我可以確認數據正在從控制器傳遞到視圖,因為我可以轉儲變量並查看數據。 顯然,它不是chartjs可以理解的格式。 任何信息將不勝感激。 朝正確的方向輕推就可以幫助。 非常感謝,克萊
事實證明,這是導致問題的“ dates”變量(除了語法錯誤)。 Chartjs正在尋找一個像這樣的數組: ["2015/06/08", 2015/06/13", "2015/6/20"]
而不是雄辯的查詢中的集合對象。所以我運行了$dates = array_column($inventories->toArray(), 'updated_at');
獲取數組,然后通過運行以下命令重新格式化日期:
foreach ($dates as $date){
$formatted_dates[] = date('m/d/Y', strtotime($date));
}
然后,我將$formatted_dates
傳遞給視圖。 我敢肯定有更好的方法,但是我每天都在學習,它對我有用!
在您的模型中;
用這個
public function getCreatedAtAttribute($value)
{
return date('m/d/Y', strtotime($value));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.