2017-07-07 85 views
0

我有一个表在我的数据库:文章
它具有行:ID,标题,NUM使用其中的教义2

我试图在原则2中的查询,以显示与最高的文章“号码”。

我需要帮助才能正常使用“其中”我的查询到articleController 或者,如果你有一些更好的解决方案

public function articleAction() 
    $repository = $this->getDoctrine()->getRepository('appBundle:Article'); 
    $query = $repository->createQueryBuilder('a') 
      ->select('a.id','a.title','a.num') 
      ->where("a.num AS Max(a.num)") 
      ->getQuery() 
      ; 
      $article = $query->getResult(); 
    return $this->render('appBundle:articles:article.html.twig', array('article'=>$article)); 
} 
+0

这不是有效的where子句语法即使你没有使用QueryBuilder。从什么时候可以有WHERE a.num AS Max(a.num)? 你想做什么? WHERE a.num =(SELECT MAX(num)FROM Article)? – gview

+0

嗨gview,确切地说,我想展示文章的最大值的数量。给定数字是整数类型。 –

+0

这解决了我的问题:public function art_lastAction() { // single createQuery $ em = $ this-> get('doctrine.orm.entity_manager'); $ dql =(“SELECT a.title,a.id,a.num FROM RiehBundle:Article a ORDER BY a.num DESC”); $ query = $ em-> createQuery($ dql); $ query - > setMaxResults(1); $ art_last = $ query-> getResult(); return $ this-> render('RiehBundle:articles:art_last.html.twig',array('art_last'=> $ art_last)); } –

回答

0

一个可能的解决

public function articleAction() { 
    $repository = $this->getDoctrine()->getRepository('appBundle:Article'); 
    $article = $repository->createQueryBuilder('a') 
      ->select('a.id','a.title','a.num') 
      ->orderBy('a.num', 'DESC') 
      ->getQuery() 
      ->getOneOrNullResult(); 

    return $this->render('appBundle:articles:article.html.twig', array(
       'article'=>$article) 
      ); 
} 
+0

嗨dhvarela,这个例子也帮了我很多,因为我需要如何使用“createQueryBuilder”而不是createQuery。万分感谢。 –

+0

因此,“getOneOrNullResult()”方法用于限制结果?!!好的... –

+0

是的,你可以看到更多的选项[这里](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#查询结果的格式) – dhvarela