如何基于属性名拆分Eloquent集合为多数组适配Laravel Charts需求
符合Laravel原生规范的实现方案
Laravel 集合内置了pluck()方法,可以直接提取指定字段的值生成集合,不需要手动遍历填充数组,你可以直接改写为如下代码:
// getData方法返回Eloquent Collection $form_data = $this->getData($initial_date, $final_date, $product_list, $group); // 分别提取period和amount字段 $labels = $form_data->pluck('period'); $dataset = $form_data->pluck('amount'); $chart->labels($labels); $chart->dataset('My dataset', 'line', $dataset);
由于pluck()返回的Illuminate\Support\Collection实例实现了 Laravel 的Arrayable契约,Laravel Charts 可以直接识别该实例,不需要额外调用toArray()转成原生数组,如果你的场景需要原生数组,再补充调用->toArray()即可。
如果要进一步优化性能,可以在getData()方法的查询逻辑里限定只查需要的两个字段,避免查询冗余字段消耗资源:
// getData方法内的查询示例 return YourModel::query() ->select('period', 'amount') // 保留你原有查询条件 ->where(...) ->get();
内容的提问来源于stack exchange,提问作者Raphael Andres
相关产品推荐
相关产品推荐

