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安全配置
Oct 09 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
thinkphp分页集成实例
Jul 24 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 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
php ctype函数中文翻译和示例
2014/03/21 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python实现注册登录系统
2017/08/08 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
用python处理MS Word的实例讲解
2018/05/08 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript