$row) { if ($key < 6 || !$row[1]) { continue; } $requestArray = [ 'c_forma_pago' => $row[0], 'descripcion' => $row[1], 'bancarizado' => $row[2], 'numero_de_operacion' => $row[3], 'rfc_del_emisor_de_la_cuenta_ordenante' => $row[4], 'cuenta_ordenante' => $row[5], 'patron_para_cuenta_ordenante' => $row[6], 'rfc_del_emisor_cuenta_de_beneficiario' => $row[7], 'cuenta_de_benenficiario' => $row[8], 'patron_para_cuenta_beneficiaria' => $row[9], 'tipo_cadena_pago' => $row[10], 'banco_emisor_de_la_cuenta_ordenante' => $row[11], 'fecha_inicio_de_vigencia' => $row[12] ? Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[12])) : null, 'fecha_fin_de_vigencia' => $row[13] ? Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[13])) : null, ]; $batchData[] = $requestArray; $processedRows++; if (count($batchData) >= $batchSize) { $this->insertBatch($batchData); $batchData = []; } } if (!empty($batchData)) { $this->insertBatch($batchData); } echo "\n\033[32mImport completed: Processed $processedRows rows.\033[0m\n"; } private function insertBatch(array $batchData) { try { DB::table('sat_forma_pago')->upsert( $batchData, [ 'c_forma_pago', ], [ 'descripcion', 'bancarizado', 'numero_de_operacion', 'rfc_del_emisor_de_la_cuenta_ordenante', 'cuenta_ordenante', 'patron_para_cuenta_ordenante', 'rfc_del_emisor_cuenta_de_beneficiario', 'cuenta_de_benenficiario', 'patron_para_cuenta_beneficiaria', 'tipo_cadena_pago', 'banco_emisor_de_la_cuenta_ordenante', 'fecha_inicio_de_vigencia', 'fecha_fin_de_vigencia', ] ); } catch (\Exception $e) { echo "Error in batch: " . $e->getMessage() . "\n"; foreach ($batchData as $row) { echo "Row data: " . json_encode($row) . "\n"; } } } }