使用单个查询而不是在laravel中使用循环来批量更新查询

时间:2019-12-18 12:44:12

标签: mysql laravel-5

我正在寻找一个使用单个查询而不是循环使用查询来批量更新的查询。我有2000多种产品,并且必须更新那里的库存值。现在,我为每个产品使用循环,因此需要花费太多时间。这是我的代码

foreach($products as $srcProduct){ 
                $product_id = $srcProduct['product_id'];         
                $onhand = 0;
                if(isset($srcProductOnhand[$product_id])){
                        $onhand = $srcProductOnhand[$product_id];
                }
                TransferSourceProducts::where(['product_id' => $product_id, 'transfer_id' => $id])
                                       ->update(['onhand' =>$onhand]);                   
 }

1 个答案:

答案 0 :(得分:0)

您可以使用ON DUPLICATE KEY UPDATE。它运行很快。

INSERT into `table` (id, description)
VALUES (1, 'desc1'), (2, 'desc2'), (3, 'desc3')
ON DUPLICATE KEY UPDATE description = VALUES(description)

希望有帮助。