学说中的setFirstResult导致问题

时间:2013-12-02 09:59:42

标签: php symfony doctrine-orm

我有以下查询:

  $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

知道为什么吗?

1 个答案:

答案 0 :(得分:4)

对于MySQL,您还需要一个限制子句,而不仅仅是偏移量。在您的情况下,添加

$query->setMaxResults($limit);

然后它应该工作。如果您不想要限制,请将其设置为非常高的数字。

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