在 laravel 中为 morris js 创建数组

create array for morris js in laravel

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

我想从 table 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}

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

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

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

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