我正在尽最大努力防止循环遍历一个集合以获取数据表所需的更多数据。我需要一种将这两个集合或数组组合在一起的方法。
我在一个模型中有2个函数,这些函数调用一个API,该API给了我一组数据,并将其转换为集合。
Orders()
public function orders(){
$orders_array = $this->api()->request('orders.json');
return collect($orders_array);
}
返回:
Collection {#274 ▼
#items: array:2 [▼
0 => {#282 ▼
+"id": 628602961977
}
1 => {#270 ▶}
order_meta()
public function order_meta($order_id){
$order_metafields_array = $this->api()->request('meta.json');
return collect($order_metafields_array);
}
返回:
Collection
#items: [
+"name": "meta_data"
]
我想要做的是使用订单ID将order_meta()
注入每个订单中。
我想我想做这样的事情:
public function orders_detailed(){
$orders = $this->orders();
$keyed = $orders->mapWithKeys(function ($item) {
return [$item['meta'] => $this->order_metafields($item['id'])];
});
}
希望它会返回:
Collection {#274 ▼
#items: array:2 [▼
0 => {#282 ▼
+"id": 628602961977
+meta => {
+"name":"meta_data"
}
}
1 => {#270 ▶}
像这样可能吗?我也愿意首先将其合并为数组,然后创建一个集合。