yii批量插入数据现在有如下数据:
$user=array( 0=>array('id'=>1,'name'=>'张三'), 0=>array('id'=>2,'name'=>'李四'),);
现在如果需将这两条数据批量插入到数据表的话,一般大家都会想到用foreach,然后调用 insert 或者 save 方法插入数据。但实际操作却是在foreach循环操作中,insert 只会插入第一条数据,save 却只会插入第二条数据。这是为什么呢?解释如下:
插入一行到基于这个activerecord的属性表。如果表的主键是自动增量和插入前为null,将插入后的实际值填充。注意,验证不执行此方法。你可以调用validate执行验证。记录成功插入到数据库后,它的isnewrecord属性将设置为false,和它的scenario属性将设置为 update。
既然如此,那么除了使用事务该如何实现数据的批量插入呢?经试验总结了如下两种方法:
第一种方法
$model=new user();foreach($data as $attributes){ $_model=clone $model; $_model->setattributes($attributes); $_model->save();}
第二种方法
$model=new user();foreach($data as $attributes){ $model->isnewrecord=true; $model->setattributes($attributes); $model->save()&&$model->id=0;}
您可能感兴趣的文章yii framework框架之模块开发分析yii框架yiiapp()的理解yii 数据库添加,修改,删除相关操作总结yii框架如何配置默认controller与actionyii中的数据库事务的使用方法小结yii控制器动作参数绑定处理yii数据库查询操作总结yii框架缓存知识总结
http://www.bkjia.com/phpjc/1019141.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1019141.htmltecharticleyii批量插入数据 现在有如下数据: $user=array(0=array('id'=1,'name'='张三'),0=array('id'=2,'name'='李四'),); 现在如果需将这两条数据批量插入到数据表...