字符串的预期结束,在DQL Symfony中使用LIMIT时得到'LIMIT'

时间:2018-02-25 13:49:37

标签: php symfony doctrine-orm orm dql

我需要从我的表中获取最后一个Id所以我可以在另一个函数中使用它我在我的存储库中创建了这个函数但是我没有工作它向我显示错误:

  

[语法错误]第0行,第60行:错误:字符串的预期结束,得到   'LIMIT'

我正在使用的功能:

// list = [<Pointer>, E1, E2, E3] -- next=E1, previous=exception
assertEquals(E1, next());
// list = [E1, <Pointer>, E2, E3] -- next=E2, previous=E1
assertEquals(E2, next());
// list = [E1, E2, <Pointer>, E3] -- next=E3, previous=E2
assertEquals(E3, next());
// list = [E1, E2, E3, <Pointer>] -- next=exception, previous=E3
assertEquals(E3, previous());
// list = [E1, E2, <Pointer>, E3] -- next=E3, previous=E2
assertEquals(E2, previous());
// list = [E1, <Pointer>, E2, E3] -- next=E2, previous=E1
assertEquals(E1, previous());
// list = [<Pointer>, E1, E2, E3] -- next=E1, previous=exception

2 个答案:

答案 0 :(得分:1)

class YourController extends Controller {

     *********************************************************
     public function yourAction( *** ) {
          $youLastRecord = $this->getDoctrine()->getRepository(YourEntity::class)->findOneBy(
               array(),
               array('id' => 'DESC')
          );
     }
}

答案 1 :(得分:0)

OFFSET和/或LIMITDQL Query一起使用的正确方法是在$query对象上使用以下api,如下所示:

Query::setMaxResults($maxResults)
Query::setFirstResult($offset)

如文档First and Max Result Items (DQL Query Only)

中所述

例如,您的代码应该是:

     public function LastIdCart()
      {
        $query = $this->getEntityManager()
        ->createQuery("select i.id from BoutiqueBundle:Panier i ORDER BY 
        i.id");
         $query->setMaxResults(1);
        return $query->getResult(); // will return an arraycollection with only one element
       }

希望这澄清