$gt++; break; } if (count($players[0]->opponents($tournament)->where('players.id', '=', $players[$pt])->get()) == 0) { $games[$gt]->players = array($players[0], $players[$pt]); $gt++; unset($players[$pt]); unset($players[0]); $players = array_values($players); $pt = 0; continue; } } return $games; } } Round::deleting(function ($round) { $games = $round->games()->get(); $gamesToDelete = array(); foreach ($games as $game) { $gamesToDelete[] = $game->id; } Report::whereIn('game', $gamesToDelete)->delete(); Game::whereIn('id', $gamesToDelete)->delete(); $tournament = $round->tournament(); $players = $tournament->players()->get(); foreach ($players as $player) { $player->updateScore($tournament); $player->updateSos($tournament); } });