当前位置:网站首页>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
边栏推荐
猜你喜欢
leetcode 503.下一个更大元素II 单调栈
What is the Treasure Project (TPC), a dark horse with wings in 2022!
[] free column Android dynamic debugging GDB APP of safety
Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
C#/VB.NET: Extract text and pictures from PowerPoint document
MQTT X Web:在线的 MQTT 5.0 客户端工具
2022深圳(软考中级)系统集成项目管理工程师报名
听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!
2022深圳(软考高级)信息系统项目管理师认证报名
基于SSM实现手机销售商城系统
随机推荐
[免费专栏] Android安全之安卓APK浅析
golang单元测试:testing包的基本使用
OpenHarmony如何查询设备类型
Fully automated machine learning modeling!The effect hangs the primary alchemist!
IS31FL3737B general 12 x 12 LED drive 40 QFN I2C 42 ma
[免费专栏] Android安全之Root检测和绕过(浅析)
21天学习挑战赛--第四天打卡(横竖屏切换)
华为云创新中心助力启泰智能 补齐中小模具企业数字化能力短板
基于Web的疫情隔离区订餐系统
切绳子【洛谷P1577】【二分】
[Free column] Xposed plug-in development for Android security [from scratch] tutorial
2022深圳(软考中级)系统集成项目管理工程师报名
国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
grafana docks local ldap
Office 365 Group概述以及创建方法
mysql duplicate data group multiple latest records
Typora 结合 Picgo 自动上传图像
阿里云架构师耗时几个月编写这份MySQL高可用和性能优化技术宝典
[] free column Android run Android, her - as command of safety
[] free column Android dynamic debugging GDB APP of safety