Tôi đang cố gắng để làm pagination, nhưng có một lỗi:Sử dụng Hạn chế và Offset trong Doctrine2 truy vấn
[Syntax Error] line 0, col 57: Error: Expected end of string, got 'limit'
Tôi không hoàn toàn chắc chắn nếu điều này là đúng cú pháp (và logic) để làm truy vấn của tôi:
public function getFriendsFromTo ($user, $limit, $offset)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.user='.$user.' limit '.$limit. 'offset' .$offset)
->getResult();
}
Bạn bè và người dùng có liên quan nhiềuToTo và OneToMany, vì vậy trong bảng bạn bè có một trường - user_id.
Đây là trong điều khiển của tôi:
$user = $this->get('security.context')->getToken()->getUser();
$id = $user->getId();
$friends = $user->getFriends();
$result = count($friends)
$FR_PER_PAGE = 7;
$pages = $result/$FR_PER_PAGE;
$em = $this->getDoctrine()->getEntityManager();
$friends = $em->getRepository('EMMyFriendsBundle:Friend')
->getFriendsFromTo($id, $FR_PER_PAGE, $page*$FR_PER_PAGE);
Tôi biết rằng đó là ngu ngốc và thậm chí sai (đặc biệt là tham số thứ ba là $page*$FR_PER_PAGE
), nhưng tôi chỉ muốn thử nếu truy vấn hoạt động, và nó didn' t.
bạn ấy có ý gì nó đã không làm việc? nhận được bất kỳ lỗi nào? Bạn cũng nên sử dụng 'setParameter (" user ", $ user)' thay vì chèn nó trực tiếp vào DQL. Ngoài ra, nó sẽ là tốt đẹp để xem định nghĩa thực thể của bạn. EDIT: chỉ cần nhìn thấy chỉnh sửa. Nên có một không gian được nối thêm vào 'offset' – Flukey
Có, tôi gặp lỗi - đó là việc bắt đầu câu hỏi. – Faery
Gói này có thể bạn quan tâm: http://knpbundles.com/KnpLabs/KnpPaginatorBundle – Flukey