laravel excel 判断带 各种页面提示参数

来源:互联网 发布:程序员之死 事件女方 编辑:程序博客网 时间:2024/05/25 20:00

public function houseimport(Request $request){        //laravel excel的两种写法之一,注意作用域链        $data = Excel::load($request->file('excel'), function($reader) {})->get()->toArray();        //exce1表格中$ch_arr商品序号不能为空        $sh_array = array();        foreach ($data[0] as $ite){            reset($ite);            $first=current($ite);            array_push($sh_array,$first);        }        //循环遍历第一项是否为空        foreach($sh_array as $v) {            if (empty($v)) {                return response()->json(['status' => 0, 'msg' => '该excel导入rfid码对应的表格不能为空']);            }        }        $ch_array = array();        foreach ($data[0] as $item){            foreach ($item as $value){                array_push($ch_array,$value);            }        }       //判断导入的数据是非有重复值        if (count($ch_array) != count(array_unique($ch_array))) {            return response()->json(['status'=>0,'msg'=>'该导入数组有重复值']);        }//        dd($ch_array);        //导入的数据与数据库的数据是否重复        $warehouses= RfidWarehouse::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] != 'rfid码'){                    return response()->json(['status'=>0,'msg'=>'导入失败']);                }            }            //数据通过models传到数据库中            foreach($value as $rfidData){                RfidWarehouse::create([                        'rfid'=>$rfidData['rfid码']                ]);            }        }        return ['status'=>1,'msg'=>'导入成功'];    }

view

<form action="" method="post" enctype="multipart/form-data" id="formlist">    {{csrf_field()}}<input type="file" name="excel" value="" onchange="fileupload()" multiple="multiple"></form>
ajax  注意要导入  jquery-form.js  与  layer插件

<script>    //rfid仓库信息异步导入    function fileupload(){        $('#formlist').ajaxSubmit({            url:'/admin/rfidmanage/houseimport',//ajax请求的方法            dataType:'json',            type:'post',            data:$('#formlist').fieldSerialize(),            success:function(res){                if (res.status == 0) {                    layer.msg(res.msg);                } else {                    layer.msg(res.msg, {icon: 1}, function () {                        location.href = '/admin/rfidmanage/warehouse';//返回传参数的页面,200                    });                };    }
数组元素的取值,取第一个字段的值不为空,     再取二三字段的值不能够重复

$data = Excel::load($request->file('excel'), function($reader) {})->get()->toArray();        //商品分类不能为空        $ch_array = array();        foreach ($data[0] as $item){            reset($item);            $first=current($item);            array_push($ch_array, $first);        }        foreach($ch_array as $v) {            if (empty($v)) {                return response()->json(['status' => 0, 'msg' => '商品分类不能为空']);            }        }//  声明数组的一些对应数据库的字段不能为重复值        $sh_array=array();        foreach ($data[0] as $iten){            reset($iten);            current($iten);            $second=next($iten);            $third=next($iten);            array_push($sh_array,$second,$third);        }        if (count($sh_array) != count(array_unique($sh_array))) {            return response()->json(['status'=>0,'msg'=>'该导入的商品名称或者商品信息有误']);        }

//判断导入的数据是否与数据库有重复的值$houses= Goods::where('name','=',$sh_array[0])->first();if($houses){    return response()->json(['status'=>0,'msg'=>'导入失败,商品名称数据重复']);}$infos= Goods::where('goods_info','=',$sh_array[1])->first();if($infos){    return response()->json(['status'=>0,'msg'=>'导入失败,商品信息数据重复']);}
//判断表头的数据是非正确,防止其他文件的导入foreach ($data as $value) {//循环sheet    if(!empty($value)){        $titleArr = array_keys($value[0]);        //判断表头的数据是非正确,防止其他文件的导入        //只取值前四项        if($titleArr[0] != '商品分类的id'){            return response()->json(['status'=>0,'msg'=>'导入失败']);        }        if($titleArr[1] != '商品名称'){            return response()->json(['status'=>0,'msg'=>'导入失败']);        }        if($titleArr[2] != '商品信息'){            return response()->json(['status'=>0,'msg'=>'导入失败']);        }        if($titleArr[3] != '商品图片'){            return response()->json(['status'=>0,'msg'=>'导入失败']);        }    }    //数据通过models传到数据库中    foreach($value as $rfidData){        Goods::create([            'class_id' => $rfidData['商品分类的id'],            'name' => $rfidData['商品名称'],            'goods_info' => $rfidData['商品信息'],            'img' => $rfidData['商品图片'],            'goods_num' => $rfidData['商品数量'],            'product_code' => $rfidData['商品编号'],            'site' => $rfidData['产址'],            'work_company' => $rfidData['加工企业'],            'productdate' => $rfidData['保质期'],            'area' => $rfidData['产地'],            'price' => $rfidData['单价'],            'product_at' => $rfidData['生产日期'],        ]);    }}return ['status'=>1,'msg'=>'导入成功'];

注意区别:

1,

判断导入的数据是否与数据库有重复的值

//判断导入的数据是否与数据库有重复的值$houses= Goods::where('name','=',$sh_array[0])->first();if($houses){    return response()->json(['status'=>0,'msg'=>'导入失败,商品名称数据重复']);}
2,编辑的功能,未改变数据时的保存

$product_code = $request->get('product_code');$res = Goods::where('product_code', '!=', $goods->product_code)->where('product_code', $product_code)->first();if ($res) {             return ['status' => 0, 'msg' => '该商品编号已经存在'];}

原创粉丝点击