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 关注
- 195 浏览
添加回答
举报
