2 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
邏輯是:
開(kāi)始交易。
獲取給定的所有行,
item_sku
按item_quantity > 0
升序排列item_quantity
。remaining_to_sell
使用要出售的數(shù)量進(jìn)行初始化遍歷行,減去
min(remaining_to_sell, row.item_quantity
并item_quantity
保存行。減少該數(shù)量remaining_to_sell
繼續(xù)迭代直到
remaining_to_sell
變?yōu)榱恪?/p>如果在行尾
remaining_to_sell
不為零,則您沒(méi)有足夠的庫(kù)存,因此回滾事務(wù)并引發(fā)錯(cuò)誤。否則,提交
我將很快用實(shí)際代碼編輯答案。我現(xiàn)在在手機(jī)上。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
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));
}
看來(lái)我忘記了基本的算法和循環(huán),因?yàn)樯洗挝也坏貌辉诖髮W(xué)做這件事......
- 2 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報(bào)