Laravel DB批量更新的方法

Laravel DB批量更新的方法Laravel DB批量更新的方法

大家好,又见面了,我是你们的朋友全栈君。

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.net/105893.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」

    Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」CCFCSP认证考试真题(201712-2):游戏问题描述解题思路参考答案测试用例小结问题描述试题编号: 201712-2试题名称: 游戏时间限制: 1.0s内存限制: 256.0MB问题描述  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。  游戏开始,从1…

    2025年9月1日
    7
  • jQuery -> bind / live / delegate 终结者 – on

    jQuery -> bind / live / delegate 终结者 – on

    2022年1月3日
    47
  • 手机软件测试的简单认识方法_什么都不会去做软件测试

    手机软件测试的简单认识方法_什么都不会去做软件测试接触手机软件测试也有三四个月了,讲讲自己目前的想法。仅仅是一点小认识,很多还不够成熟,不够全面,欢迎各位指正交流。废话不多说了,请戳下刚开始当然就是根据已有的测试用例来执行,接触较好后就觉得

    2025年9月19日
    5
  • 如何用 python gzip解压?[通俗易懂]

    如何用 python gzip解压?[通俗易懂]#createadecompressgzipfilefunctionimportgzipimportosdefun_gzip(gzip_file):f_name=gzip_file.split(‘.’)[0]withgzip.open(gzip_file,’rb’)asf_in:withopen(f_name,’wb’)asf_out:f_out.writelines(f_in)

    2025年9月25日
    4
  • windws7下Loadrunner12的使用教程详解「建议收藏」

    windws7下Loadrunner12的使用教程详解「建议收藏」一.初识LoadRunner( 点击链接跳转到LoadRunner的安装步骤)1.简介:(1)从LoadRunner英语字面上进行理解就是负载跑步者,为什么这么说呢?对于从事IT软件行业的工作者如开发人员和测试人员来说一定不会感到陌生就是在承受负载的条件下运行软件或者网页的业务。从另一个比较形象的理解就是“压死骆驼的最后一根稻草”这里的稻草就是软件的事务,LoadRunner这款软件…

    2022年10月14日
    2
  • Protel 99SE详细安装教程(附安装包)[通俗易懂]

    Protel 99SE详细安装教程(附安装包)[通俗易懂]安装步骤:安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。安装前请断网。试装系统:win1064bit1.解压安装包。2.以管理员身份运行Protel99SE文件夹里的安装程序。3.点击下一步。4.name和company随便输入,打开SerialNO.txt,将serialNO输入到安装界面的code栏中。5.选择好安装目录(不要出现中…

    2022年5月30日
    83

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号