/** * Load data fixtures with the passed EntityManager * * @param \Doctrine\Common\Persistence\ObjectManager $manager */ function load(ObjectManager $manager) { $genres = ['Action', 'Adventure & RPG', 'Learning & Tutorials', 'Music', 'Puzzle', 'Shooter', 'Sports & Racing', 'Strategy & Defense', 'Other']; $repo = $manager->getRepository('GotChosenSiteBundle:EGGameGenre'); foreach ($genres as $genre) { if (!$repo->findOneBy(['name' => $genre])) { $o = new EGGameGenre(); $o->setName($genre); $manager->persist($o); } } $manager->flush(); }
public function findPopularQualifierGames(Scholarship $scholarship, $gameName = null, $gameStudio = null, EGGameGenre $genre = null, $offset = 0, $limit = 20) { $em = $this->getEntityManager(); $where = ""; if ($gameName) { $where .= " AND g.gameName LIKE :gameName "; } if ($gameStudio) { $where .= " AND g.studioName LIKE :gameStudio "; } if ($genre) { $where .= " AND g.genre = :genre "; } $q = $em->createQuery('SELECT g FROM GotChosenSiteBundle:EGGame g ' . 'LEFT JOIN g.scholarships gs ' . 'LEFT JOIN g.statistics st ' . 'WHERE g.status = :gameStatus AND st.statsMonth = :statsMonth ' . $where . 'AND (gs.scholarship IS NULL OR gs.scholarship != :sship)' . 'ORDER BY st.monthPlays DESC'); $q->setParameter('gameStatus', EGGame::STATUS_ACTIVE); $q->setParameter('statsMonth', date('Y-m')); $q->setParameter('sship', $scholarship->getId()); $q->setFirstResult($offset); $q->setMaxResults($limit); if ($gameName) { $q->setParameter('gameName', "%{$gameName}%"); } if ($gameStudio) { $q->setParameter('gameStudio', "%{$gameStudio}%"); } if ($genre) { $q->setParameter('genre', $genre->getId()); } return $q->getResult(); }