简体   繁体   English

如何从Excel和数据库中计算匹配的ID

[英]how to count matched id from excel and database

i have an excel file and i want to upload it and save data to database. 我有一个Excel文件,我想上传它并将数据保存到数据库。

And data will be updated based on IC Number (Identity card). 并且数据将根据IC号(身份证)进行更新。

If in excel file there are 4 IC are matched with IC from the database, it will count and there will be a notification if 4 data match and update to database. 如果在excel文件中有4个IC与数据库中的IC匹配,它将计数,并且如果有4个数据匹配并通知数据库,则会有一个通知。

The question is how to count matched ic from excel and database? 问题是如何从excel和数据库中计算匹配的ic? it always show zero (0) 它总是显示零(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' ]); } 

this is my code to count 这是我要计算的代码

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

Assuming all Code you wrote is correct (I have no idea how the Excel Package works ), there are a few lines that need altering and you are good to go. 假设您编写的所有代码都是正确的(我不知道Excel软件包的工作方式),那么需要更改几行,您就可以开始了。

First you have to declare the variable number outside the scope of forEach After that, instead of 首先,您必须在forEach范围之外声明变量号,然后,而不是

$number = Loandisburse.......

You have to use 你必须用

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

In order not to overwrite your previous values. 为了不覆盖您以前的值。

That means you have to try the following code: 这意味着您必须尝试以下代码:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM