On failure doesn't skip errors but goes on to add it to the database.
public function rules(): array
{
return [
'cus_name' => 'bail|required|string|max:255',
'cau_cat' => 'required|integer|between:1,4',
'cus_cat' => 'required|integer|between:1,4',
'cus_type' => 'required|integer|between:1,2',
'cus_idnum' => 'required|string|max:255',
'cus_idtype' => 'required|integer|between:1,16',
'cus_type' => 'required|integer|between:1,4',
'listtype_id' =>'required|integer|between:1,4',
'cus_dob' => 'required|date|date_format:Y-m-d',
];
}
public function chunkSize(): int
{
return 1000;
}
public static function afterImport(AfterImport $event)
{
}
public function onFailure(Failure ...$failure)
{
Log::stack(['import-failure-logs'])->info(json_encode($failure));
}
$file = $request->file('file')->store('import');
$import = new CustomersImport;
$import->import($file);
foreach ($import->failures() as $failure) {
$failure->row(); // row that went wrong
$failure->attribute(); // either heading key (if using heading row concern) or column index
$failure->errors(); // Actual error messages from Laravel validator
$failure->values(); // The values of the row that has failed.
}
if ($import->failures()->isNotEmpty()) {
return back()->withFailures($import->failures());
}