2012-04-11 17 views
6

Bắt đầu với phiên bản 2.2 Doctrine có Paginator. Chỉ có một ví dụ trong tài liệu:Doctrine2 Paginator

<?php 
use Doctrine\ORM\Tools\Pagination\Paginator; 

$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c"; 
$query = $entityManager->createQuery($dql) 
         ->setFirstResult(0) 
         ->setMaxResults(100); 

$paginator = new Paginator($query, $fetchJoin = true); 

$c = count($paginator); 
foreach ($paginator as $post) { 
    echo $post->getHeadline() . "\n"; 
} 

Có gì mới trong lớp này là kể từ khi toàn bộ quá trình được mô tả trong tài liệu có thể được thực hiện với $query->getResult().

Tôi biết có một số gói về phân trang nhưng tôi không muốn cài đặt các gói của bên thứ ba cho các vấn đề tầm thường như vậy. Mặt khác, tôi không thể tìm thấy bất kỳ điều gì về việc phân trang giáo lý2. Nên có một số phương pháp hữu ích của lớp. Tôi có thể tìm thấy chúng ở đâu? Nếu không có thì điểm của cả lớp là gì?

Trả lời

3

Trình theo dõi của Doctrine không phải là nhận thức của Symfony - đó là cấp độ thấp và Doctrine cụ thể.

Mặt khác, nếu bạn cài đặt a 3rd party bundle, bạn sẽ nhận được bộ điều hợp phân trang cho Doctrine ORM & ODM, Propel, mảng đồng bằng, v.v. Bạn cũng sẽ nhận được tích hợp Symfony và xem trợ giúp. Ít nhất WhiteOctoberPagerfantaBundle mà tôi sử dụng thực hiện tất cả những điều này.

Vì vậy, trừ khi bạn chỉ sử dụng Doctrine, tôi khuyên bạn nên xem xét lại vị trí của mình về gói bên thứ ba.

+4

Điều này không trả lời câu hỏi, không có gì đặc biệt về Symfony trong vấn đề ở bàn tay. Thay vào đó, tốt hơn là nên có một giải pháp giáo lý. Tôi đang gặp vấn đề chính xác và tôi cũng tự hỏi điểm của lớp Paginator là gì. –

+0

AFAICT, lớp Paginator tồn tại chỉ để giải quyết vấn đề xảy ra khi cố gắng sử dụng setMaxResults trên một truy vấn DQL JOINed. Các thiết kế tồi tệ cho tôi, nhưng rõ ràng tôi biết điều gì. >. < –

Các vấn đề liên quan