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

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="" οnchange="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' => '该商品编号已经存在'];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值