首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从excel和数据库中计数匹配的id

如何从excel和数据库中计数匹配的id
EN

Stack Overflow用户
提问于 2018-11-12 02:15:33
回答 1查看 68关注 0票数 0

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

并将根据IC卡(身份证)更新数据。

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

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

代码语言:javascript
复制
  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 =贷款::其中(‘ic’,$value'ic_no')->where('stage','W11')->where('status_upload',1)->count();

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 07:18:41

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

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

代码语言:javascript
复制
$number = Loandisburse.......

你必须用

代码语言:javascript
复制
$number += Loandisburse.........

以避免覆盖以前的值。

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53255213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档