getRows() ->chunk(1000) ->each(function (LazyCollection $chunk) use ($fieldnames) { foreach ($chunk as $row) { $row = array_values($row); $match_id = 0; $ss_player_id = 0; $update_array = []; foreach ($fieldnames as $key => $name) { if ($key == 1) { $match_id = (int) $row[$key]; } elseif ($key == 2) { $ss_player_id = (int) $row[$key]; } else { $update_array[$name] = $row[$key]; } } StatistikoPlayer::updateOrCreate( [ 'match_id' => $match_id, 'ss_player_id' => $ss_player_id, ], $update_array ); } // $collection = []; // foreach ($chunk as $row) { // $update_array = []; // foreach ($row as $name => $value) { // switch ($name) { // case 'SS_MATCH_ID': // $update_array['match_id'] = (int) $value; // break; // case 'SS_PLAYER_ID': // $update_array['ss_player_id'] = (int) $value; // break; // default: // $name = strtolower($name); // $update_array[$name] = $value; // break; // } // } // $collection[] = $update_array; // } // StatistikoPlayer::upsert( // $collection, // uniqueBy: [ // 'match_id', // 'ss_player_id', // ], // update: $fieldnames); }); } }