当前位置:网站首页>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
边栏推荐
- ebook download | "Business executives' IT strategy guide - why enterprises should implement DevOps"
- 单调栈
- Samsung's flagship discount is 1,800, Apple's discount is over 1,000, and the domestic flagship is only reduced by 500 to send beggars
- 阿里云架构师耗时几个月编写这份MySQL高可用和性能优化技术宝典
- 论文精读:VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
- [免费专栏] Android安全之数据存储与数据安全【大集合】
- mysql duplicate data group multiple latest records
- 工大科雅深交所上市:市值45亿 齐承英家族是大股东
- An overview of Office 365 Groups and how to create them
- 为什么数字钱包需要引入小程序生态
猜你喜欢

这年头还不来尝试线稿图视频??
![[免费专栏] Android安全之Android奇淫run-as命令](/img/d5/771802eb57f24c1cf88657f5c5a724.png)
[免费专栏] Android安全之Android奇淫run-as命令

毕昇编译器优化:Lazy Code Motion

『百日百题 · 基础篇』备战面试,坚持刷题 第五话——循环语句(2)!

Detailed explanation of VIT transformer

ebook download | "Business executives' IT strategy guide - why enterprises should implement DevOps"

ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》
![[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)](/img/86/3123f87d9b88d4fe424b2cf134eb62.png)
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)

毕昇编译器优化:Lazy Code Motion

论文精读:VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
随机推荐
MQTT X Web:在线的 MQTT 5.0 客户端工具
ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》
听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!
对应运放 RC 滤波负反馈的波形
Leetcode 739.每日温度 单调栈
字节二面,差点倒在了MySQL上面
环境:Flink版本:1.15.1jar包:flink-sql-connector-oracle
智驾科技完成C1轮融资,此前2轮已融4.5亿元
论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题
Open Source Summer | List Details Display Based on Ruoyi Architecture
How to stop the test after reaching a given number of errors during stress testing in JMeter
最新BEV感知基线 | 你确定需要激光雷达?(卡内基梅隆大学)
使用.NET简单实现一个Redis的高性能克隆版(四、五)
为什么maxcompute的数据导入到mysql会乱码?mysql的表是udf8mb4的编码
[免费专栏] Android安全之Android Fragment注入
双屏协作更高效,华硕灵耀X 双屏Pro 2022创作体验再升级
WPF 实现带蒙版的 MessageBox 消息提示框
2021 RoboCom 世界机器人开发者大赛-本科组(决赛)
[] free column Android dynamic debugging GDB APP of safety
winpe工具WEPE微PE工具箱