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

在使用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(); }

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

时间: 2024-09-23 08:21:15

Yii2 批量插入、更新数据实例的相关文章

jdbc批量出入-jdbc批量插入,数据只有一条

问题描述 jdbc批量插入,数据只有一条 我统一10条插入一次,可是最后数据库只有第十条数据,前九条都没有,插入几次都是,怎么办 List backList = new ArrayList(); Connection con = getConnection(); PreparedStatement stat = null; String str= null; int j = 0; for(int i=0;i<list.size();i++){ str = list.get(i); String[

mssql 使用游标遍历方式批量update更新数据

mssql 使用游标遍历方式批量update更新数据 /*   --1.创建测试表    create TABLE Table1    (    a varchar(10),    b varchar(10),    c varchar(10),    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED    (    a ASC    )    ) ON [PRIMARY]    create TABLE Table2    (    a varchar(

ThinkPHP实现更新数据实例详解(demo)_php实例

在没介绍正文之前先给大家介绍下数据更新方法支持的连贯操作方法有: 在上一篇文章中我们实现了数据的删除和批量删除,这一篇文章我们将实现数据的更新. 首先依然是预期效果图: 点击修改后进入modi.html页面,然后进行修改,如此处修改了真实姓名这一属性: 点击保存: 以上是要实现的效果,下面是实现的具体代码了: 首先依然是视图内的代码: <form role="form" method="post" action="__MODULE__/Admin/U

SQLServer用存储过程实现插入更新数据示例_MsSql

实现 1)有相同的数据,直接返回(返回值:0): 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2): 3)没有数据,进行插入数据处理(返回值:1). [创建存储过程] Create proc Insert_Update @Id varchar(20), @Name varchar(20), @Telephone varchar(20), @Address varchar(20), @Job varchar(20), @returnValue int output as declar

MyBatis批量插入(insert)数据操作_java

在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179

Yii2批量插入数据

方法一 yii2一次插入多行数据  /** * @inheritdoc 批量添加 * @params $add array 添加数据 */ public function add_all($add) { $connection = \Yii::$app->db; //数据批量入库 $connection->createCommand()->batchInsert( 'zss_stat_series', ['series_name','series_turnover','created_a

如何在存储过程中实现插入更新数据

存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层,接下来就一个小例子来说明,用存储过程插入或更新语句. 1.数据库表结构 所用数据库为Sql Server2008. 2.创建存储过程 (1)实现功能: 有相同的数据,直接返回(返回值:0): 有主键相同,但是数据不同的数据,进行更新处理(返回值:2): 没有数据,进行插入数据处理(返回值:1). 根据不同的情况设置存储过程的返回值,调用存储过程的时候,根据不同的返回值,进行相关的处理. (2)下面编码只是实现的基本的功能,具体的Sql代

Sqlite批量插入大数据的例子

这两天被数据库插入批量数据折磨的有点抓狂还好找到了解决方法,话不多说,直接看下面两部分代码: SQLiteDatabase db = dbHelper.getWritableDatabase(); //         LogUtils.i("开始解析*****************"+ new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss").format(new Date()));         for (int i = 0;

ThinkPHP实现更新数据实例详解(demo)

在没介绍正文之前先给大家介绍下数据更新方法支持的连贯操作方法有: 在上一篇文章中我们实现了数据的删除和批量删除,这一篇文章我们将实现数据的更新. 首先依然是预期效果图: 点击修改后进入modi.html页面,然后进行修改,如此处修改了真实姓名这一属性: 点击保存: 以上是要实现的效果,下面是实现的具体代码了: 首先依然是视图内的代码: <form role="form" method="post" action="__MODULE__/Admin/U