簡體   English   中英

結合使用chart.js和laravel從控制器傳遞數據到視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM