当前位置:网站首页>Laravel DB批量更新的方法
Laravel DB批量更新的方法
2022-08-09 18:37:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
1.1 事例数据:
$multipleData = array(
array(
'from_plat_skuid' => 1022016 ,
'sku_storage_num' => 100
),
array(
'from_plat_skuid' => 1205019 ,
'sku_storage_num' => 100
)
);处理方法:
//同时更新多个记录
public function updateBatch($tableName = "", $multipleData = array()){
if( $tableName && !empty($multipleData) ) {
// column or fields to update
$updateColumn = array_keys($multipleData[0]);
$referenceColumn = $updateColumn[0]; //e.g id
unset($updateColumn[0]);
$whereIn = "";
$q = "UPDATE ".$tableName." SET ";
foreach ( $updateColumn as $uColumn ) {
$q .= $uColumn." = CASE ";
foreach( $multipleData as $data ) {
$q .= "WHEN ".$referenceColumn." = ".$data[$referenceColumn]." THEN '".$data[$uColumn]."' ";
}
$q .= "ELSE ".$uColumn." END, ";
}
foreach( $multipleData as $data ) {
$whereIn .= "'".$data[$referenceColumn]."', ";
}
$q = rtrim($q, ", ")." WHERE ".$referenceColumn." IN (". rtrim($whereIn, ', ').")";
// Update
return DB::update(DB::raw($q));
} else {
return false;
}
}sql事例语句:
UPDATE table_name SET col_1_name = CASE
WHEN id = '1' THEN 'col_1_value'
WHEN id = '2' THEN 'col_1_value'
ELSE col_1_name END,
col_2_name = CASE
WHEN id = '1' THEN 'col_2_value'
WHEN id = '2' THEN 'col_2_value'
ELSE col_2_name END
WHERE id IN('1','2')注:这样做效率会有一个大的提升。
2.1 replace into 批量更新
replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个清空大量数据。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105893.html原文链接:https://javaforall.cn
边栏推荐
- 再次开始清理电子海图开发群中长期潜水人士
- 华为云创新中心助力启泰智能 补齐中小模具企业数字化能力短板
- 论文精读:VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
- AWS CodePipeLine deploys ECS across accounts
- 优秀的 Verilog/FPGA开源项目介绍(三十一)- OFDM
- 数学建模代码速成~赛前一个月~matlab~代码模板~吐血总结~三大模型代码(预测模型、优化模型、评价模型)
- ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》
- OpenHarmony如何查询设备类型
- 基于SSM实现手机销售商城系统
- CreateCompatibleDC用法
猜你喜欢
![[免费专栏] Android安全之和平精英(FZ)APK逆向分析](/img/22/a5129a310eec5ee1bf6f1cf90d05de.png)
[免费专栏] Android安全之和平精英(FZ)APK逆向分析

Openharmony Lightweight System Experiment--GPIO Lighting
![[免费专栏] Android安全之数据存储与数据安全【大集合】](/img/bc/9d71ff1de27156e11cde169022f4a1.png)
[免费专栏] Android安全之数据存储与数据安全【大集合】
![[免费专栏] Android安全之APK动态方式逆向应用【三种Smali注入方法】](/img/11/39a25d86c9486bb5201659bbbeaa36.png)
[免费专栏] Android安全之APK动态方式逆向应用【三种Smali注入方法】

WPF 实现带蒙版的 MessageBox 消息提示框

对应运放 RC 滤波负反馈的波形

使用.NET简单实现一个Redis的高性能克隆版(四、五)
![[免费专栏] Android安全之Root检测和绕过(浅析)](/img/04/4170dea9c367c406fe3f36cb9c6501.png)
[免费专栏] Android安全之Root检测和绕过(浅析)

Intensive reading of the paper: VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

Iptables防火墙常见的典型应用场景
随机推荐
三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子
Swift -- 数组高阶函数
华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
IDEA tools commonly used configuration
基于CC2530 E18-MS1-PCB Zigbee DIY作品(二)
基于Web的疫情隔离区订餐系统
Start cleaning up the long-term divers in the electronic chart development group again
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!
单调栈
2022.08.06_每日一题
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
MYSQL物理存储文件的页和INNOBUF的页是否有大小区别?
poj 1182 食物链(带权并查集)
全自动化机器学习建模!效果吊打初级炼丹师!
宝塔面板安装使用
Fully automated machine learning modeling!The effect hangs the primary alchemist!
Flume (六) --------- Flume 数据流监控
uniapp离线推送华为厂商申请流程
Office 365 Group概述以及创建方法