我有以下查询:
$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 :(得分:4)
对于MySQL,您还需要一个限制子句,而不仅仅是偏移量。在您的情况下,添加
$query->setMaxResults($limit);
然后它应该工作。如果您不想要限制,请将其设置为非常高的数字。