我有一个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 =贷款::其中(‘ic’,$value'ic_no')->where('stage','W11')->where('status_upload',1)->count();
发布于 2018-11-12 07:18:41
假设您编写的所有代码都是正确的(我不知道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 Ifhttps://stackoverflow.com/questions/53255213
复制相似问题