第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

減少mysql中的庫(kù)存項(xiàng)目

減少mysql中的庫(kù)存項(xiàng)目

PHP
狐的傳說(shuō) 2022-10-28 15:40:54
美好的一天,我為 ERP 解決方案創(chuàng)建了一個(gè)腳本,該解決方案將項(xiàng)目保存在一個(gè)庫(kù)存表中,同一個(gè) SKU 以不同的數(shù)量和批次多次出現(xiàn)。當(dāng)我銷(xiāo)售商品時(shí),我希望將庫(kù)存數(shù)量視為具有相同 SKU 的所有商品的總和,例如:|item_id     |item_sku|   item_quantity|         lot||1           |10101001|   0            |    xyz     ||2           |10101002|   5            |    012     ||3           |10101001|   6            |    123     ||4           |10101001|   7            |    456     ||5           |10101001|   8            |    yf3     |如果我出售 14 件 10101001,我將如何編寫(xiě)不影響 item_id[1] 的代碼(因?yàn)樗?item_quantity 小于 1),從 item_id[3] 和 item_id[4] 中獲取所有數(shù)量并減少 item_id [5](14 = 6+7+1)在面向?qū)ο蟮姆椒ㄖ械臄?shù)量場(chǎng)減 1?我考慮過(guò)使用 for each 循環(huán),但我得到的只是減少所有行的數(shù)量字段 - 所以也許我沒(méi)有以正確的方式編寫(xiě)它。另外,我考慮將 item_quantity 視為一個(gè)總和,因此按 SKU 分組,對(duì) item_quantity 字段求和,然后從該總和中減去 sold_quantity,但是我將如何再次將數(shù)量分布在數(shù)據(jù)庫(kù)行中?我真的被困在這里,從周一晚上開(kāi)始,這個(gè)問(wèn)題就讓我發(fā)瘋了。任何幫助將不勝感激。LE:這是我的代碼:$toSell = $value['sales_quantity'];        $sum = StockDetail::where('sku', $product['sku'])->sum('stock_quantity');        $updatedStock = $sum - $toSell;//        StockDetail::where('sku', $product['sku'])->update(['stock_quantity' => $updatedStock]); // doesn't work for lots        foreach($salesProduct as $key => $value) {//// more code here which is irrelevant to the issue I'm facing//            foreach($stockNotNull as $stock => $product) {                if($toSell === 0) {                    return;                }                do {                    $product->stock_quantity->decrement();                    $toSell--;                    if ($product->stock_quantity === 0) {                        continue;                    }                } while($product->stock_quantity > 0 && $toSell > 0);            }        }
查看完整描述

2 回答

?
至尊寶的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

邏輯是:

  1. 開(kāi)始交易。

  2. 獲取給定的所有行,item_skuitem_quantity > 0升序排列item_quantity。

  3. remaining_to_sell使用要出售的數(shù)量進(jìn)行初始化

  4. 遍歷行,減去min(remaining_to_sell, row.item_quantityitem_quantity保存行。減少該數(shù)量remaining_to_sell

  5. 繼續(xù)迭代直到remaining_to_sell變?yōu)榱恪?/p>

  6. 如果在行尾remaining_to_sell不為零,則您沒(méi)有足夠的庫(kù)存,因此回滾事務(wù)并引發(fā)錯(cuò)誤。否則,提交

我將很快用實(shí)際代碼編輯答案。我現(xiàn)在在手機(jī)上。


查看完整回答
反對(duì) 回復(fù) 2022-10-28
?
波斯汪

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é)做這件事......


查看完整回答
反對(duì) 回復(fù) 2022-10-28
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)