关于批量插入数据的问题

要实现的功能:批量创建用户。

我目前的做法:foreach循环,在循环里把符合条件的用insertGetId方法插入用户表并获得用户id,然后把用户id再插入到用户角色表里。

目前遇到的问题:时间过长,一个foreach循环耗时大概0.1左右,单单100条数据就得10秒钟,别提成千上万条数据了。使用事务没有明显效果

DB::beginTransaction();
        try{
            foreach($excel as $k => $v){
                $val = array();
                //中间省略判断代码
                $val['username'] = $v['name'];
                //...
                if($id = $this->insertGetId($val)){
                    if($role = DB::table('user_role')->insert(['user_id' => $id, 'role_id' => 3])){//3代表默认角色
                    }else{
                        $v[6] = '创建失败';
                        $err[] = $v;
                        User::destroy($id);
                    }
                }else{
                    $v[6] = '创建失败';
                    $err[] = $v;
                }
            }
            DB::commit();
        } catch (Exception $ex) {
            DB::rollBack();
        }<br></br>

我估计应该是思路性问题,本人菜鸟一个,大概laravel框架里有更好的方法我不知道而已

snail
修改的评论也不能少于六个字哦!
ljm5889
修改的评论也不能少于六个字哦!
snail
修改的评论也不能少于六个字哦!
ljm5889
修改的评论也不能少于六个字哦!