laravel Excel import 带参数id

来源:互联网 发布:网络棋盘游戏 编辑:程序博客网 时间:2024/05/21 06:18

1,view

<a href="javascript:void(0);" class="addfile"><div class="rfidin_box clearfix">    <img src="{{asset('images/lodingin_icon.png')}}" alt="">        <span style=" color: orange">导入</span>    <form action="" method="post" enctype="multipart/form-data" id="formlist">        {{csrf_field()}}        <input type="file" data-id="{{$goods->id}}"  value="" name="excel"  onchange="fileupload()" multiple="multiple">    </form></div>   </a>

2,ajax(注意jQuery,jQuery-form.js,layer插件的引入还有bootstrap相关的css,js的引入)

 function fileupload(){            $('#formlist').ajaxSubmit({//                ['goods_id'=>$good->id]                url: "{{url('admin/commodity/rfidimport')}}",//重点                dataType:'json',                type:'post',                data:$('#formlist').fieldSerialize(),//                data:$('#formlist').serialize(),                success:function(res) {                    if (res.status == 0) {                        layer.msg(res.msg);                    } else {                        layer.msg(res.msg, {icon: 1}, function () {                            location.reload();
//重点
}); } }, error:function(xhr, type){ layer.msg('请检查导入的excel表格式是否正确'); } }); }

3,laravel的路由


 Route::post('/rfidimport','CommodityController@rfidimport');  

//重点


4,控制器的写法:


public function rfidimport(Request $request) {//     dd($request->all());        $data = Excel::load($request->file('excel'), function($reader) {})->get()->toArray();        //商品分类不能为空//        dd($data);        $sh_array = array();        foreach ($data[0] as $ite){            reset($ite);            $first=current($ite);            array_push($sh_array, $first);        }//        dd($sh_array);        foreach($sh_array as $v) {            if (empty($v)) {                return response()->json(['status' => 0, 'msg' => '商品序号不能为空']);            }        }//        dd($data);        $ch_array = array();        foreach ($data[0] as $item){            reset($item);            current($item);            $first=next($item);            array_push($ch_array,$first);        }        //判断导入的数据是非有重复值        if (count($ch_array) != count(array_unique($ch_array))) {            return response()->json(['status'=>0,'msg'=>'该导入数组有重复值']);        }        //导入的数据与数据库的数据是否重复        $warehouses= GoodsNexus::where('rfid','=',$ch_array[0])->first();        if($warehouses){            return response()->json(['status'=>0,'msg'=>'导入失败,rfid码重复']);        }        foreach ($data as $value) {//循环sheet            if(!empty($value)){                $titleArr = array_keys($value[0]);                //判断表头的数据是非正确,防止其他文件的导入                if($titleArr[0] != '商品序号'){                    return response()->json(['status'=>0,'msg'=>'导入失败']);                }                if($titleArr[1] != 'rfid'){                    return response()->json(['status'=>0,'msg'=>'导入失败']);                }            }            //数据通过models传到数据库中            foreach($value as $rfidData){                GoodsNexus::create([                    'goods_id'=>$rfidData['商品序号'],                    'rfid' => $rfidData['rfid'],                ]);            }        }        return ['status'=>1,'msg'=>'导入成功'];   }

原创粉丝点击