首页 > 解决方案 > 在 laravel 中为 morris js 创建数组

问题描述

我很难从表中加载某些数据以获取 json 数组并将其包含到 morris js 甜甜圈中(例如:https ://codepen.io/ncarlucci/pen/JYxQBK )

我想从表中加载列中subscriber的不同名称type并计算它们以获得以下数组:

[
    {value: 50, label: 'typename1'},
    {value: 25, label: 'typename2'},
    {value: 25, label: 'typename3'},
],

如果我这样做:

$subscriber = Subscribe::select('type')->get()->groupBy('type')
    ->map(function($subscribe){
        return $subscribe->count();
    })->toJson();

我得到以下输出,但它是错误的:

{"company":1,"person":16,"user":6}

标签: arraysjsonlaravelmorris.js

解决方案


可能有更好的方法来处理您的案例,但是由于您没有提供有关模型或数据库结构的更多信息,因此应该可以:

$subscriber = Subscribe::select('type')->get()
    ->groupBy('type')
    ->map(function($subscribe, $label) {
        return ['value' => $subscribe->count(), 'label' => $label];
    })
    ->values()
    ->toJson();

关键是在map函数内部构建内部数组元素,然后调用values()去掉map函数留下的unneded外部标签。

如果您需要进一步解释,请在下面的评论中询问


推荐阅读