根据属性名称将Eloquent集合拆分为多个数组



我正在使用Laravel Charts创建一个图,并从Eloquent查询中获取列(时间段(和数据集。

我的查询返回如下数组:

金额
期间
01/21 200.00
21/21 150.00
21年3月 175.00

假设您使用的是Laravel>5.4,一种选择是使用具有集合的高阶消息,例如

$form_data->map->period->toArray()

这意味着你的代码看起来像:

$form_data = $this->getData($initial_date, $final_date, $product_list, $group);
$chart->labels($form_data->map->period->toArray());
$chart->dataset('My dataset', 'line', $form_data->map->amount->toArray());

或者,(如评论中所述(你也可以使用pickle:

$form_data = $this->getData($initial_date, $final_date, $product_list, $group);
$chart->labels($form_data->pluck('period')->toArray());
$chart->dataset('My dataset', 'line', $form_data->pluck('amount')->toArray());

如果您想用更少的行做同样的事情,可以使用data_get()

$form_data = $this->getData($initial_date, $final_date, $product_list, $group);
$chart->labels(data_get($form_data, '*.period');
$chart->dataset('My dataset', 'line', data_get($form_data, '*.amount'));

data_get($target, $key, $default = null)处理简单的对象、数组甚至Collections,并返回一个数组。自5.5版本以来,它一直在框架中。

最新更新