• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel框架学习笔记之批量更新数据功能

    本文实例讲述了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程序设计有所帮助。

    您可能感兴趣的文章:
    • Laravel 批量更新多条数据的示例
    • laravel实现批量更新多条记录的方法示例
    • Laravel实现批量更新多条数据
    上一篇:PHP实现的微信公众号扫码模拟登录功能示例
    下一篇:Laravel框架实现调用百度翻译API功能示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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