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; }
public function generaLiga($equipos) { $liga = new Collection(); $id_equipos = []; foreach ($equipos as $equipo) { $eq = new Equipo($equipo); $eq->persist(); array_push($id_equipos, $eq); } $jornadas = (count($id_equipos) - 1) * 2; $jornada = []; $intervalo = new DateInterval("P7D"); $fecha = new DateTime("2014-11-2"); shuffle($id_equipos); $equiposAmb = $id_equipos; array_pop($equiposAmb); $equiposRev = new ArrayObject(array_reverse($equiposAmb, false)); $itRev = $equiposRev->getIterator(); $equiposAmb = new ArrayObject($equiposAmb); $it = $equiposAmb->getIterator(); $equipoComodin = $id_equipos[count($equipos) - 1]; for ($i = 0; $i < $jornadas; $i++) { $fechaPartido = $fecha->format("Y-m-d"); $jornada = new Jornada($this->getId_liga(), $fechaPartido); $jornada->persist(); $fecha->add($intervalo); if ($i < $jornadas / 2) { for ($j = 0; $j < count($id_equipos) / 2; $j++) { //Resetemos los iteradores if (!$it->valid()) { $it->rewind(); } if (!$itRev->valid()) { $itRev->rewind(); } if ($j === 0) { if ($j % 2 === 0) { $partido = new Partido($jornada->getId_jornada(), $it->current(), $equipoComodin); } else { $partido = new Partido($jornada->getId_jornada(), $equipoComodin, $it->current()); } } else { $partido = new Partido($jornada->getId_jornada(), $it->current(), $itRev->current()); $itRev->next(); } $it->next(); $partido->persist(); $jornada->getPartidos()->add($partido); } } else { for ($j = 0; $j < count($id_equipos) / 2; $j++) { //Resetemos los iteradores if (!$it->valid()) { $it->rewind(); } if (!$itRev->valid()) { $itRev->rewind(); } if ($j === 0) { if ($j % 2 === 0) { $partido = new Partido($jornada->getId_jornada(), $equipoComodin, $it->current()); } else { $partido = new Partido($jornada->getId_jornada(), $it->current(), $equipoComodin); } } else { $partido = new Partido($jornada->getId_jornada(), $itRev->current(), $it->current()); $itRev->next(); } $it->next(); $partido->persist(); $jornada->getPartidos()->add($partido); } } $liga->add($jornada); } return $liga; }