laravel Excel import 带参数id

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"  οnchange="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'=>'导入成功'];
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值