【问题标题】:how to count matched id from excel and database如何从excel和数据库中计算匹配的id
【发布时间】:2018-11-12 15:18:41
【问题描述】:

我有一个 excel 文件,我想上传它并将数据保存到数据库。

并且数据将根据 IC 号码(身份证)进行更新。

如果在excel文件中有4个IC与数据库中的IC匹配,就会计数,如果4个数据匹配并更新到数据库会有通知。

问题是如何从excel和数据库中计算匹配的ic? 它总是显示零 (0)

  if($request->hasFile('file')){
        $extension = File::extension($request->file->getClientOriginalName());
        
        if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") {
 
            $path = $request->file->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();

            if(!empty($data) && $data->count()){
               
                foreach ($data as $value) {
                    $insert['data'] = [
                    'no'  => $value->no,
                    'name'  => $value->name,
                    'ic_no' => $value->ic_no,
                    'disburse_date' => $value->disburse_date,
                    'product_type_description' => $value->product_type_description,
                    'amount_release' => $value->amount_release,
                    'amount' => $value->amount,
                    'date_disburse' => $value->date_disburse,
                    'net_disbursement' => $value->net_disbursement,
                    ];
                
 
                if(!empty($insert))
                  {
                        $user = Auth::user()->id;

                          $request                  = new DisburseFromMbsb;

                            //$request->cus_id           = $data->id_cus;  
                            $request->ic_no               = $value['ic_no'];
                            $request->name               = $value['name'];
                            $request->disburse_date    = $value['disburse_date'];
                            $request->product_type_description    = $value['product_type_description'];
                            $request->amount_release   = $value['amount_release'];
                            $request->amount           = $value['amount'];
                            $request->date_disburse    = $value['date_disburse'];
                            $request->net_disbursement = $value['net_disbursement'];
                            $request->user_id           = $user;
                                
                            $request->save();*/

                             Loandisburse::where('ic', $value['ic_no'])->where('stage','W11')->where('status_upload',0)->update(array(
                                'status_upload'=>'1',
                                'amount_release' => $value['amount_release'],
                                'amount' => $value['amount'],
                                'date_disburse' => $value['date_disburse'], 
                                'net_disbursement' => $value['net_disbursement'],
                                'disburse_date' => $value['disburse_date'],
                                'product_type_description' => $value['product_type_description']

                            ));

                               
                    
$number = Loandisburse::where('ic', $value['ic_no'])->where('stage','W11')->where('status_upload',1)->count(); // this is my code to count
                        
                }
             
            }
             
             return redirect('/upload/amount')->with(['update' => 'Data saved successfully '.$number.'  rows' ]);
            }
 

这是我要计算的代码

$number = Loandisburse::where('ic', $value['ic_no'])->where('stage','W11')->where('status_upload',1)->count() ;

【问题讨论】:

    标签: php excel laravel count controller


    【解决方案1】:

    假设您编写的所有代码都是正确的(我不知道 Excel 包是如何工作的), 有几行需要修改,您可以开始了。

    首先你必须在forEach的范围之外声明变量号 之后,而不是

    $number = Loandisburse.......
    

    你必须使用

    $number += Loandisburse.........
    

    为了不覆盖你以前的值。

    这意味着您必须尝试以下代码:

    if($request->hasFile('file')){
        $extension = File::extension($request->file->getClientOriginalName());
    
        $number = 0;
        if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") {
    
            $path = $request->file->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();
    
            if(!empty($data) && $data->count()){
    
                foreach ($data as $value) {
                    $insert['data'] = [
                    'no'  => $value->no,
                    'name'  => $value->name,
                    'ic_no' => $value->ic_no,
                    'disburse_date' => $value->disburse_date,
                    'product_type_description' => $value->product_type_description,
                    'amount_release' => $value->amount_release,
                    'amount' => $value->amount,
                    'date_disburse' => $value->date_disburse,
                    'net_disbursement' => $value->net_disbursement,
                    ];
    
    
                    if(!empty($insert)) {
                        $user = Auth::user()->id;
    
                        $request                  = new DisburseFromMbsb;  
                        $request->ic_no               = $value['ic_no'];
                        $request->name               = $value['name'];
                        $request->disburse_date    = $value['disburse_date'];
                        $request->product_type_description    = $value['product_type_description'];
                        $request->amount_release   = $value['amount_release'];
                        $request->amount           = $value['amount'];
                        $request->date_disburse    = $value['date_disburse'];
                        $request->net_disbursement = $value['net_disbursement'];
                        $request->user_id           = $user;
    
                        $request->save();
    
                        Loandisburse::where('ic', $value['ic_no'])
                                      ->where('stage','W11')
                                      ->where('status_upload',0)->update(array(
                                            'status_upload'=>'1',
                                            'amount_release' => $value['amount_release'],
                                            'amount' => $value['amount'],
                                            'date_disburse' => $value['date_disburse'], 
                                            'net_disbursement' => $value['net_disbursement'],
                                            'disburse_date' => $value['disburse_date'],
                                            'product_type_description' => $value['product_type_description']
    
                        ));
                        $number += Loandisburse::where('ic', $value['ic_no'])
                                                ->where('stage','W11')
                                                ->where('status_upload',1)
                                                ->count(); // this is my code to count     
                    }//Closing If Not Empty
                }//Closing For Each
            }//Closing If
        }//Closing If
    return redirect('/upload/amount')->with(['update' => 'Data saved successfully '.$number.'  rows' ]);
    }//Closing If
    

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多