我必須為我的 laravel 收藏添加一些屬性。
我的 laravel 集合原始屬性:
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
]
]
我想添加“金額”屬性,它是“價格”x“數量”相乘的結果,如下所示:
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 集合的 put() 方法來做到這一點,但似乎 each() 方法會洗掉集合實體,所以我不能使用 put() 方法:
$collection->each(function($item) {
$item->put('amount', $item->price * $item->qty);
});
這有什么解決辦法?
uj5u.com熱心網友回復:
在這種情況下,您不能->put在->each回圈中使用,因為->each不會通過參考回圈專案。因此,對專案的所有修改在回圈后都會丟失。
您可以映射陣列以回傳您$item與額外 key 的實際合并amount。正確的使用方法是->map。
$collection = $collection->map(function($item) {
return array_merge($item, [
'amount' => $item->price * $item->qty;
]);
});
https://laravel.com/docs/9.x/collections#method-map
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425334.html
