当前位置: 移动技术网 > IT编程>开发语言>PHP > Laravel框架学习笔记之批量更新数据功能

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了laravel框架批量更新数据功能。分享给大家供大家参考,具体如下: 前言 上周公司的比赛项目以泪奔结束...一台2核4g的vps完全蹦了..集体被老大叼

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

前言

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

代码

//from https://github.com/mavinoo/laravelbatch
static 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相关内容感兴趣的读者可查看本站专题:《laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网