Yii2 批量插入、更新数据实例


Posted in PHP onMarch 15, 2017

在使用yii2开发项目时,有时候会遇到这样的情况:

向后台发送多条数据,其中一些数据已经存在记录,只需要对其部分字段的值进行修改;而另一部分的数据则需要新添加进去.

这就需要对添加的数据进行判断,其中一些执行update,剩下的执行insert

代码如下,不对的地方请指教:

//批量更新,并将需要批量插入的数据放入数组中

foreach($goods as $k => $v)
{
  if(yourModel::updateAllCounters(
    ['goods_num' => $v],
    ['goods_id' => $k,'user_id' => $id] 
  ))
  {
    continue;//如果已经更新,则跳过此次循环,到下一次
  }

  $data[] = [
    'user_id' => $id,
    'goods_id' => $k,
    'goods_num' => $v,
    'created_time' => $time,
  ]
}

//再执行批量插入
if (isset($data)) 
{
  Yii::$app->db->createCommand()
       ->batchInsert(yourModel::tableName(),['user_id','goods_id','goods_num','created_time'],
       $data)
       ->execute();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 PHP
Yii实现复选框批量操作实例代码
Mar 15 #PHP
thinkPHP实现签到功能的方法
Mar 15 #PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 #PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 #PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 #PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 #PHP
Yii2下点击验证码的切换实例代码
Mar 14 #PHP
You might like
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
python 实现的车牌识别项目
2021/01/25 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
公司授权委托书范本
2014/09/18 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
实习指导教师评语
2014/12/30 职场文书
写给老师的感谢信
2015/01/20 职场文书
公司经营目标责任书
2015/01/29 职场文书
故意杀人案辩护词
2015/05/21 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
HttpClient实现表单提交上传文件
2022/08/14 Java/Android