zoukankan      html  css  js  c++  java
  • yii批量插入数据

    现在有如下数据:

    1 $user=array(
    2     0=>array('id'=>1,'name'=>'张三'),
    3     0=>array('id'=>2,'name'=>'李四'),
    4 );

    现在如果需将这两条数据批量插入到数据表的话,一般大家都会想到用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 }
  • 相关阅读:
    Hadoop 倒排索引
    Hadoop 电话通信清单
    Hadoop 多表关联
    Ubuntu 16.04下Samba服务器搭建和配置(配截图)
    Hadoop 单表关联
    Hadoop 排序
    Hadoop 数据去重
    Hadoop 学生平均成绩
    MapReduce计算模型的优化
    win7系统下dos界面无法自由调整大小
  • 原文地址:https://www.cnblogs.com/xieqian111/p/5217557.html
Copyright © 2011-2022 走看看