首页 > 语言 > PHP > 正文

Laravel框架学习笔记之批量更新数据功能

2024-05-05 00:09:21
字体:
来源:转载
供稿:网友

本文实例讲述了Laravel框架批量更新数据功能。分享给大家供大家参考,具体如下:

前言

上周公司的比赛项目以泪奔结束...一台2核4G的VPS完全蹦了..集体被老大叼杠。下个月的比赛又要开始了,所以现在抓紧时间升级服务器,优化代码与SQL,刚看到排名那有1000多条更新语句,太受不了了,所以在google找了下资源,找到了批量更新数据的方法,记录一下。

代码

//from https://github.com/mavinoo/laravelBatchstatic function batchUpdate($model, array $values, $index = null){  $final = [];  $ids = [];  if (!count($values)) {    return false;  }  if (!isset($index) || empty($index)) {    $index = $model->getKeyName();  }  foreach ($values as $key => $val) {    $ids[] = $val[$index];    foreach (array_keys($val) as $field) {      if ($field !== $index) {        $value = (is_null($val[$field]) ? 'NULL' : '"' . self::mysql_escape($val[$field]) . '"');        $final[$field][] = 'WHEN `' . $index . '` = "' . $val[$index] . '" THEN ' . $value . ' ';      }    }  }  $cases = '';  foreach ($final as $k => $v) {    $cases .= '`' . $k . '` = (CASE ' . implode("/n", $v) . "/n"      . 'ELSE `' . $k . '` END), ';  }  $full_table     =  $model->getConnection()->getTablePrefix() . $model->getTable();  $query = "UPDATE `" .$full_table . "` SET " . substr($cases, 0, -2) . " WHERE `$index` IN(" . '"' . implode('","', $ids) . '"' . ");";  /DB::update($query);  #return $this->db->connection($this->getConnectionName($table))->update($query);}

测试代码如下

$userInstance = new User();$value = [  [    'id' => 2,    'contest_name' => 'A1',    'project_name' => 'P1'  ] ,  [    'id' => 3,    'contest_name' => 'A2',    'project_name' => 'P2'  ] ,];$index = 'id';Utils::batchUpdate($userInstance, $value, $index);

记录完赶紧干活去....

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选