请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如何用activerecord批量插入数据

如何用activerecord批量插入数据

不知道怎么批量插入,即使在控制器里使用模型循环插入也是只有一条数据,其他的多条数据根本没有进入的数据表中,请问老师这是什么情况

ad控制器是

$model = new Ad();

$up = new UploadForm();
if(Yii::$app->request->isPost){

    $post = Yii::$app->request->post();

    $files = UploadedFile::getInstances($up,'imgpath');

    foreach($files as $file){
        $up->imgpath = $file;

        $filepath = $up->upload();
        $post['Ad']['imgpath'] = $filepath;

        if($filepath){

            if($model->add($post)){

                echo $filepath.'<br />';
            }else{
                echo 'no ok';
            }



        }
    }

ad模型是

public function add($data){
    $this->createuser = 'admin';
    $this->createtime = time();
    if($this->load($data) && $this->validate()){
        return $this->save();
    }
    return false;
}

uploadform模型是

   public function upload()
   {
       if ($this->validate()) {

           $filename = 'ad_'.date('YmdHisT').rand(10000,99999) . '.' . $this->imgpath->extension;
           if($this->imgpath->saveAs('./upload/ad/' . $filename)){
               return $filename;
           }
           return false;

       } else {
           return false;
       }
   }

正在回答 回答被采纳积分+3

2回答

Jason 2016-09-13 14:19:21

可以使用batchInsert来批量插入,也可以使用foreach,但是需要保证数据完整,因此要做事务,推荐使用batchInsert

$postModel = new Post;
$rows = [['title1','content1',.....],.....];		
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute();


0 回复 有任何疑惑可以回复我~
提问者 vijaychien 2016-09-08 22:46:48

请老师看下

0 回复 有任何疑惑可以回复我~

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号