function generaLiga($equipos) { $this->equipos = $equipos; foreach ($equipos as $equipo) { $equipo = new Equipo($equipo); $equipo->persist(); } //Intervalo entre jornadas y fecha 1ª jornada $intervalo = new DateInterval("P7D"); $fecha = new DateTime("2014-11-2"); //Por si hay equipos impares if (count($equipos) % 2 != 0) { array_push($equipos, "extra!!"); } //Genera las jornadas de la 1ª vuelta for ($i = 0; $i < count($equipos) - 1; $i++) { //Formato fecha $fechaPartido = $fecha->format("Y-m-d"); //Una jornada por cada vuelta del for $jornadaActual = new Jornada($fechaPartido); //Suma intervalo jornadas $fecha->add($intervalo); $jornadaActual->persist(); //Coge del 1º a la mitad $locales = array_slice($equipos, 0, count($equipos) / 2); //De la mitad a los que haya $visitantes = array_reverse(array_slice($equipos, count($equipos) / 2)); for ($j = 0; $j < count($visitantes); $j++) { $partidoActual = new Partido($jornadaActual->getId(), $locales[$j], $visitantes[$j]); $partidoActual->persist(); //En la jornada i, el partido j, el local es j $liga[$i][$j]['local'] = $locales[$j]; $liga[$i][$j]['visitante'] = $visitantes[$j]; } //El 1er equipo $equipoBase = array_shift($equipos); array_unshift($equipos, array_pop($equipos)); array_unshift($equipos, $equipoBase); } //Genera las jornadas de vuelta foreach ($liga as $jornada) { $fechaPartido = $fecha->format("Y-m-d"); //Una jornada por cada vuelta del for $jornadaActual = new Jornada($fechaPartido); //Suma intervalo jornadas $fecha->add($intervalo); $jornadaActual->persist(); $jornadaVuelta = []; foreach ($jornada as $partido) { $partidoActual = new Partido($jornadaActual->getId(), $partido["visitante"], $partido['local']); $partidoActual->persist(); $partidoVuelta['local'] = $partido['visitante']; $partidoVuelta['visitante'] = $partido['local']; $jornadaVuelta[] = $partidoVuelta; } array_push($liga, $jornadaVuelta); } return $liga; }