如何按月汇总值并分配两个不同的变量?

时间:2017-03-02 21:48:17

标签: json laravel chart.js

我希望通过created_at日期总结payment_amount,并将月份总数分配给两个不同的变量,以便我可以在图表js x和y轴上绘图。

到目前为止,我使用以下代码输出json字符串。

public function index()
{

    $data = [
        'period' => Payment::all('created_at', 'payment_amount')->groupBy(function($date) {
             return Carbon::parse($date->created_at)->format('F');
        })->tojson(),
    ];

    //dd($data);
    return view('admin.dashboard', $data);  
}   

所以我希望有一个json字符串 $ created_at //在x轴上 $ total payment_amount //在y轴上。

这是我需要设置变量的图表js部分...

var barChartData = {
    labels: <?php echo $created_at; ?>, //by month.
    datasets: [{
        label: 'Revenue',
        backgroundColor: "rgba(220,220,220,0.5)",
        data:  <?php echo $payment_amount; ?>, //summed up by month
    }]
};

1 个答案:

答案 0 :(得分:1)

您可以在查询中完成所有操作:

public function index()
{
    $data = Payment::selectSub('MONTH(created_at)', 'month')
        ->selectSub('SUM(payment_amount)', 'total_payments')
        ->groupBy('month')
        ->get();

    return view('admin.dashboard', compact('data'));  
}

<强>更新

将控制器分开看起来像:

var barChartData = {
    labels: {{ $data->pluck('month') }}, //by month.
    datasets: [{
        label: 'Revenue',
        backgroundColor: "rgba(220,220,220,0.5)",
        data:  {{ $data->pluck('total_payments') }}, //summed up by month
    }]
};

然后在我们看来:

start "" "directory\update.vbs"