将属性添加到 laravel collection
Adding attributes to laravel collection
我必须为我的 laravel collections 添加一些属性。
我的laravelcollection原属性:
array:2 [▼
0 => array:20 [▼
"curr" => "IDR"
"price" => 5500000.0
"rate" => 14325.803
"qty" => 2
]
1 => array:20 [▼
"curr" => "IDR"
"price" => 1500000.0
"rate" => 14325.803
"qty" => 1
]
]
我想添加“数量”属性,它是“价格”乘以“数量”的结果,如下所示:
array:2 [▼
0 => array:20 [▼
"curr" => "IDR"
"price" => 5500000.0
"rate" => 14325.803
"qty" => 2
"amount" => 11000000.0
]
1 => array:20 [▼
"curr" => "IDR"
"price" => 1500000.0
"rate" => 14325.803
"qty" => 1
"amount" => 1500000.0
]
]
我试图通过 laravel collection 的 put() 方法来完成它,但似乎 each() 方法将删除 collection 实例,所以我不能使用 put() 方法:
$collection->each(function($item) {
$item->put('amount', $item->price * $item->qty);
});
这个问题的解决方法是什么?
对于这种情况,您不能在 ->each
循环中使用 ->put
,因为 ->each
不会通过引用循环项目。所以在循环后对项目的所有修改都会丢失。
您可以将数组映射到 return 您的实际 $item
与额外键 amount
合并。正确的使用方法是->map
.
$collection = $collection->map(function($item) {
return array_merge($item, [
'amount' => $item->price * $item->qty;
]);
});
我必须为我的 laravel collections 添加一些属性。
我的laravelcollection原属性:
array:2 [▼
0 => array:20 [▼
"curr" => "IDR"
"price" => 5500000.0
"rate" => 14325.803
"qty" => 2
]
1 => array:20 [▼
"curr" => "IDR"
"price" => 1500000.0
"rate" => 14325.803
"qty" => 1
]
]
我想添加“数量”属性,它是“价格”乘以“数量”的结果,如下所示:
array:2 [▼
0 => array:20 [▼
"curr" => "IDR"
"price" => 5500000.0
"rate" => 14325.803
"qty" => 2
"amount" => 11000000.0
]
1 => array:20 [▼
"curr" => "IDR"
"price" => 1500000.0
"rate" => 14325.803
"qty" => 1
"amount" => 1500000.0
]
]
我试图通过 laravel collection 的 put() 方法来完成它,但似乎 each() 方法将删除 collection 实例,所以我不能使用 put() 方法:
$collection->each(function($item) {
$item->put('amount', $item->price * $item->qty);
});
这个问题的解决方法是什么?
对于这种情况,您不能在 ->each
循环中使用 ->put
,因为 ->each
不会通过引用循环项目。所以在循环后对项目的所有修改都会丢失。
您可以将数组映射到 return 您的实际 $item
与额外键 amount
合并。正确的使用方法是->map
.
$collection = $collection->map(function($item) {
return array_merge($item, [
'amount' => $item->price * $item->qty;
]);
});