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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
深入php之规范编程命名小结
May 15 PHP
php字符串截取的简单方法
Jul 04 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP性能优化大全(php.ini)
May 20 PHP
php json相关函数用法示例
Mar 28 PHP
PHP实现批量删除(封装)
Apr 28 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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 session和cookie使用说明
2010/04/07 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
python文件写入实例分析
2015/04/08 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
讲座主持词
2014/03/20 职场文书
服务质量承诺书
2014/03/27 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
求职自我评价范文
2015/03/09 职场文书
房屋质量投诉书
2015/07/02 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA