在 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函数留下的不需要的外部标签。
如果您需要进一步的解释,请在下面的评论中提问
我很难从 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函数留下的不需要的外部标签。
如果您需要进一步的解释,请在下面的评论中提问