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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
phpwind中的数据库操作类
Jan 02 PHP
php下使用以下代码连接并测试
Apr 09 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
php判断是否为json格式的方法
Mar 04 PHP
php安装swoole扩展的方法
Mar 19 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
php命名空间设计思想、用法与缺点分析
Jul 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
js三种排序算法分享
2012/08/16 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python多进程机制实例详解
2015/07/02 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
法律工作求职自荐信
2013/10/31 职场文书
毕业生自荐书
2014/02/02 职场文书
现场施工员岗位职责
2014/03/10 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers