当前位置:网站首页>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
边栏推荐
猜你喜欢

启动 CM agent 报错——ImportError: libssl.so.10: cannot open shared object file: No such file or directory

IS31FL3737B 通用12×12 LED驱动器 I2C 42mA 40QFN

uniapp离线推送华为厂商申请流程

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

Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem

MQTT X Web:在线的 MQTT 5.0 客户端工具

双屏协作更高效,华硕灵耀X 双屏Pro 2022创作体验再升级

这年头还不来尝试线稿图视频??

字节二面,差点倒在了MySQL上面

三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子
随机推荐
毕昇编译器优化:Lazy Code Motion
一图详解沃土云创计划高校教师参与全流程
数据库注入提权总结(一)
[免费专栏] Android安全之Android应用的汉化功能(修改so中的字符串内容)
2022.08.05_每日一题
Bi Sheng Compiler Optimization: Lazy Code Motion
Swift--多条件排序
国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
2022深圳(软考高级)信息系统项目管理师认证报名
三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子
[免费专栏] Android安全之Android工程模式
基于CC2530 E18-MS1-PCB Zigbee DIY作品
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
EsgynDB Troubleshooting - ERROR[2012] Server process tdm_arkesp could not becreated
以技术创新加速国家“碳中和”建设进程,华为云创新中心助力欣冠精密实现云智控“气”
Iptables防火墙常见的典型应用场景
【分享】入驻集简云开发者平台,如何使用Session Auth配置授权?
IDEA快捷代码实时模板
Mysql 表结构变更方案对比及分析