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 相关文章推荐
php面向对象的方法重载两种版本比较
Sep 08 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 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
php的字符串用法小结
2010/06/08 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
python2.7的编码问题与解决方法
2016/10/04 Python
Python实现的密码强度检测器示例
2017/08/23 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
python中append函数用法讲解
2020/12/11 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
庆七一活动简报
2015/07/20 职场文书
《春酒》教学反思
2016/02/22 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL