getRows() ->chunk(1000) ->each(function (LazyCollection $chunk) use ($fieldnames) { foreach ($chunk as $row) { $row = array_values($row); $sport_id = 1; $match_id = 0; $ss_player_id = 0; $update_array = []; foreach ($fieldnames as $key => $name) { if ($key == 0) $sport_id = (int) $row[$key]; else if ($key == 1) $match_id = (int) $row[$key]; else if ($key == 2) $ss_player_id = (int) $row[$key]; else $update_array[$name] = $row[$key]; } StatistikoPlayer::updateOrCreate( [ 'sport_id' => $sport_id, 'match_id' => $match_id, 'ss_player_id' => $ss_player_id, ], $update_array ); } }); } }