как посчитать совпадающий идентификатор из Excel и базы данных

У меня есть файл Excel, и я хочу загрузить его и сохранить данные в базу данных.

И данные будут обновляться на основе номера IC (удостоверение личности).

Если в файле Excel есть 4 IC, сопоставленные с IC из базы данных, он будет считаться, и будет уведомление, если 4 данных совпадут и обновятся в базе данных.

Вопрос в том, как посчитать совпавший ic из excel и базы данных?
это всегда показывает ноль (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' ]);
}

0

Решение

Предполагая, что весь код, который вы написали, является правильным (я понятия не имею, как работает пакет 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector