2 回答

TA貢獻1789條經驗 獲得超10個贊
邏輯是:
開始交易。
獲取給定的所有行,
item_sku
按item_quantity > 0
升序排列item_quantity
。remaining_to_sell
使用要出售的數量進行初始化遍歷行,減去
min(remaining_to_sell, row.item_quantity
并item_quantity
保存行。減少該數量remaining_to_sell
繼續迭代直到
remaining_to_sell
變為零。如果在行尾
remaining_to_sell
不為零,則您沒有足夠的庫存,因此回滾事務并引發錯誤。否則,提交
我將很快用實際代碼編輯答案。我現在在手機上。

TA貢獻1811條經驗 獲得超4個贊
foreach ($stockNotNull as $key => $value) {
if ($toSell < 1) {
return;
}
do {
--$stockNotNull[$key]->stock_quantity;
--$toSell;
StockDetail::where('stock_id', $stockNotNull[$key]->stock_id)
->update(['stock_quantity' => $stockNotNull[$key]->stock_quantity]);
} while(($toSell != 0) && ($stockNotNull[$key]->stock_quantity != 0));
}
看來我忘記了基本的算法和循環,因為上次我不得不在大學做這件事......
- 2 回答
- 0 關注
- 107 瀏覽
添加回答
舉報