Laravel中将查询结果转换为ChartJS适配的键值对格式方案
Laravel查询结果适配ChartJS格式解决方案
现有代码修改方案
你查询时已经通过SQL的GROUP BY products.name保证了每个商品名称仅对应一条销量记录,调用集合groupBy('name')后每个键对应的$item是仅包含1个元素的集合,直接取首个元素的quantity字段并转整型即可,修改后代码如下:
return $prd->groupBy('name')->map(function ($item, $key) { return (int) $item->first()->quantity; });
更简洁的优化方案
直接使用Laravel集合的pluck方法一步完成格式转换,不需要先分组再映射,性能和可读性更好:
// pluck第一个参数为值字段,第二个参数为自定义键字段,最后统一将销量转为整型匹配目标格式 return $prd->pluck('quantity', 'name')->map(fn($quantity) => (int)$quantity);
如果ChartJS对数值类型要求不严格,也可以省略转整型的步骤,直接写:
return $prd->pluck('quantity', 'name');
内容的提问来源于stack exchange,提问作者Izzat Z.
相关产品推荐
相关产品推荐

