[英]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.