Beispiel #1
0
 /**
  * @Route("/", name="fortune_list", defaults={"orderBy"=null})
  * @Route("/top", name="fortune_list_top", defaults={"orderBy"="votes_desc"})
  * @Route("/flop", name="fortune_list_flop", defaults={"orderBy"="votes_asc"})
  */
 public function indexAction(Request $request)
 {
     $qb = $this->getDoctrine()->getRepository('LyrixxFortuneBundle:Fortune')->createQueryWithSearch(Search::createFromRequest($request));
     $pager = new Pagerfanta(new DoctrineORMAdapter($qb));
     try {
         $pager->setCurrentPage($request->query->getInt('page', 1));
     } catch (OutOfRangeCurrentPageException $e) {
         throw $this->createNotFoundException($e->getMessage());
     }
     return ['pager' => $pager];
 }
 public function createQueryWithSearch(Search $search)
 {
     $qb = $this->createQueryBuilder('f');
     if ('votes_desc' == $search->orderBy()) {
         $qb->orderBy('f.votes', 'DESC');
     } elseif ('votes_asc' == $search->orderBy()) {
         $qb->orderBy('f.votes', 'ASC');
     }
     if ($search->search()) {
         $qb->andWhere('f.quotes like :author');
         if ($search->exactMatching()) {
             $qb->setParameter('author', sprintf('%%<%s>%%', $search->search()));
         } else {
             $qb->setParameter('author', sprintf('%%%s%%', $search->search()));
         }
     }
     return $qb->addOrderBy('f.createdAt', 'DESC');
 }