yii批量插入数据
2024-09-29 22:01:41
现在有如下数据:
现在如果需将这两条数据批量插入到数据表的话,一般大家都会想到用foreach,然后调用 insert 或者 save 方法插入数据。但实际操作却是在foreach循环操作中,insert 只会插入第一条数据,save 却只会插入第二条数据。这是为什么呢?解释如下:
插入一行到基于这个ActiveRecord的属性表。如果表的主键是自动增量和插入前为null,将插入后的实际值填充。注意,验证不执行此方法。你可以调用validate执行验证。记录成功插入到数据库后,它的isNewRecord属性将设置为false,和它的scenario属性将设置为 update。
既然如此,那么除了使用事务该如何实现数据的批量插入呢?经试验总结了如下两种方法:
第一种方法
1 |
$model = new User(); |
2 |
foreach ( $data as $attributes ){ |
3 |
$_model =clone $model ; |
4 |
$_model ->setAttributes( $attributes ); |
5 |
$_model ->save(); |
6 |
} |
第二种方法
1 |
$model = new User(); |
2 |
foreach ( $data as $attributes ){ |
3 |
$model ->isNewRecord=true; |
4 |
$model ->setAttributes( $attributes ); |
5 |
$model ->save()&& $model ->id=0; |
6 |
} |
最新文章
- 当MyEclipse突然异常关闭
- Local gulp not found in.. on windows
- 从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法
- CentOS 6.5中linux grub修复
- github如何pull最新代码
- 移动支付之智能IC卡与Android手机进行NFC通信
- Cordova CLI源码分析(一)——简介
- net开发过程中Bin目录net开发过程中Bin目录下面几种文件
- 编译安装httpd 2.4
- B-dya6
- vmware克隆虚拟机后进行网络配置
- C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;
- JDK版本更换,Eclipse中所有的项目报错
- Mac使用数据线连接ios,安装deb
- @RequestBody jackson解析复杂的传入值的一个坑;jackson解析迭代数组;jackson多重数组;jakson数组
- Tomcat的overview界面浅析
- springboot整合jedisCluster
- Python 插件安装
- js setTimeout 和 setInterval 区别
- Apache优化提高并发数量