要实现的功能:批量创建用户。
我目前的做法: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框架里有更好的方法我不知道而已