2013-12-02 3 views
2

У меня есть следующий запрос:setFirstResult в учении вызывает проблемы

$em = $this->getEntityManager(); 
     $query = $em->createQueryBuilder()->select('p') 
        ->from("AppMainBundle:ShopPicture", 'p') 
        ->innerJoin('p.shop', 's') 
        ->andWhere('s.id = :shopId ') 
        ->setParameter('shopId', $shopId) 
        ->orderBy('p.created', 'DESC') 
        ; 

     $result = $query->getQuery()->getResult(); 
     if (count($result) > $offset) { 
      $query->setFirstResult($offset); 
      $result = $query->getQuery()->getResult(); 
     } else { 
      $result = NULL; 
     } 

Я в основном хотел, чтобы получить X оставшиеся смещения изображений. Так, например, если в магазине есть 15 картин, а смещение равно 5, я хотел получить 5 самых старых изображений из этого запроса. Однако это дает мне ошибку:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OFFSET 10' at line 1 

Любая идея, почему?

+0

вы можете показать фактический запрос из файла журнала? –

+0

@AjeetManral добавлен актуальный запрос – adit

ответ

4

Для MySQL вам также нужно иметь ограничение, а не только смещение. В вашем случае добавьте

$query->setMaxResults($limit); 

, а затем оно должно работать. Если вы действительно не хотите ограничения, установите его на действительно высокое число.

http://dev.mysql.com/doc/refman/5.0/en/select.html

Смежные вопросы