首页 > 解决方案 > 如何将值从控制器传递到 JavaScript 图表

问题描述

我能够从我的数据库中获取每个月的损益值,并且我在下面展示了如何显示损益的响应。

我现在要做的是在下面的脚本中的图表中显示月份和它们各自的数字,用于盈亏?

我如何实现这一目标?

控制器


$profit= Account::selectRaw('month(date) as month, sum(amount) as amount')
          ->with(array('sector' =>  function($query){
            $query->where('type','Income');
          }))->whereHas('sector',function($query){
            $query->where('type','Income');
          })
          ->groupBy('month')
          ->get();

$loss= Account::selectRaw('month(date) as month, 
        sum(amount) as amount')
        ->with(array('sector' =>  function($query){
            $query->where('type','Expence');
        }))->whereHas('sector',function($query){
            $query->where('type','Expence');
        })
        ->groupBy('month')
        ->get();

return view(index, compact('profit','loss'))

对两个查询的响应

profit
    {"key":["August","September"],"value":["71145.00","891.00"]}

loss
    {"key":["August","September","October"],"value":["71145.00","891.00","900.00"]}

看法

<script>
$(function() {
    "use strict";
    var data = {
    labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
        series: [{
            name: 'series-real',
            data: [200, 289, 263, 278, 320, 450],
        }, {
            name: 'series-projection',
            data: [240, 502, 360, 380, 505,],            
        }]
    };

});

标签: javascriptlaravel

解决方案


你试过这个吗?

labels: {!! json_encode($profit[0]) !!},
        series: [{
            name: 'series-real',
            data: {!! json_encode($profit[1]) !!},
        }, {
            name: 'series-projection',
            data: {!! json_encode($loss[1]) !!},            
        }]
    };

json_encode 将返回一个值的 JSON 表示,以便 js 可以使用它。


推荐阅读