Laravel 批量更新(update)数据表,无阻塞 的修改历史

/**  
    * 批量更新表的值,防止阻塞  
    * @note 生成的SQL语句如下:  
    * update mj_node set sort = case id  
    *     when 13 then 1  
    *     when 1 then 4  
    *     when 7 then 5  
    *     when 8 then 6  
    *     when 9 then 7  
    *     when 10 then 8  
    *     when 11 then 9  
    *     when 12 then 10  
    * end where id in (13,1,7,8,9,10,11,12)  
    * @param $conditions_field 条件字段  
    * @param $values_field 需要被更新的字段  
    * @param $conditions  
    * @param $values  
    * @return int  
    */  
   public function batchUpdate($conditions_field, $values_field, $conditions, $values)  
   {  
       $table = $this->model->getFullTableName();//返回完整表名,自己在项目中定义  
       $sql  = 'update ' . $table . ' set '. $values_field .' = case ' .$conditions_field;  
       foreach ($conditions as $key => $condition) {  
           $sql .= ' when ' . $condition . ' then ?';  
       }  
       $sql .= ' end where id in (' . implode(',', $conditions) . ')';  
       return DB::update($sql, $values);  
   }  
HTTPROOT | 自学PHP | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 石头哥 |微信小程序 |木讯
Copyright © 1998 - 2016 HTTPROOT.COM. All Rights Reserved httproot.com 版权所有