当前位置:网站首页>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
边栏推荐
- 《痞子衡嵌入式半月刊》 第 60 期
- [] free column Android run Android, her - as command of safety
- 三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子
- Why is the data of maxcompute garbled when imported into mysql?The table of mysql is the encoding of udf8mb4
- pytest框架之mark标记功能详细介绍
- Flume (六) --------- Flume 数据流监控
- [免费专栏] Android安全之GDB动态调试APP
- winpe工具WEPE微PE工具箱
- Swift -- 数组高阶函数
- 放下手机吧:实验表明花20分钟思考和上网冲浪同样快乐
猜你喜欢
ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》
放下手机吧:实验表明花20分钟思考和上网冲浪同样快乐
YOLO v3源码详解
字节二面,差点倒在了MySQL上面
IDEA tools commonly used configuration
Open Source Summer | List Details Display Based on Ruoyi Architecture
Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
[免费专栏] Android安全之APK动态方式逆向应用【三种Smali注入方法】
[免费专栏] Android安全之Android应用的汉化功能(修改so中的字符串内容)
随机推荐
单调栈
[免费专栏] Android安全之数据存储与数据安全【大集合】
毕昇编译器优化:Lazy Code Motion
Openharmony轻量系统实验--GPIO点灯
leetcode 503.下一个更大元素II 单调栈
基于CC2530 E18-MS1-PCB Zigbee DIY作品
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
优秀的 Verilog/FPGA开源项目介绍(三十一)- OFDM
21天学习挑战赛--第四天打卡(横竖屏切换)
MFC tutorial
渗透测试——CFS三层靶机内网渗透实操
鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄...
Office 365 Group概述以及创建方法
[免费专栏] Android安全之和平精英(FZ)APK逆向分析
队列题目:用队列实现栈
[免费专栏] Android安全之静态方式逆向APK应用浅析【手动注入smali+】+【IDA Pro静态分析so文件】+【IDA Pro基础使用讲解】
Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
YOLO v3 source, rounding
golang单元测试:testing包的基本使用
对应运放 RC 滤波负反馈的波形