Chciałbym użyć Doctrine ORM i metody stronicowania w Symfony. KnpPaginatorBundle wygląda proste i łatwe w użyciu. Korzystam również z repozytoriów Doctrine, ponieważ zapytania można łatwo ponownie wykorzystać i przetestować.Jak mogę efektywnie używać paginacji z doktryną w Symfony 2?
Ten pakiet działa tak, jak inne, które znalazłem. Potrzebny jest program budujący zapytania jako parametr. Czy istnieje lepszy sposób, aby to zrobić, niż nadanie funkcji każdego z repozytoriów paginatorowi jako parametrowi (lub zeru)? Nie chcę stronicować każdego wyniku zapytania, więc nie sądzę, że opisane rozwiązanie jest najlepsze i szukam sugestii.
Pod względem wydajności lepiej jest dokonać paginacji wyników na poziomie bazy danych, dzięki czemu można uniknąć narzutu mapowania wyników na obiekty, zmniejszenia ruchu sieciowego i serwer bazy danych nie będzie musiał odczytywać/filtrować wielu rekordów. Nie jestem pewien, jak działa ten pakiet, ale możesz sprawdzić, jakie zapytania zostaną wykonane i sprawdzić, czy paginacja ma miejsce w samym zapytaniu. Jeśli tak, to dobrze jest iść. Jeśli nie chcesz wielokrotnie tworzyć tych samych zapytań, zdefiniuj je w repozytorium http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes – Xocoatzin
Zapomniałem wspomnieć, jeśli pisząc na poziomie bazy danych, będziesz musiał policzyć wszystkie rekordy, aby obliczyć ile stron tam jest. Możesz użyć do tego pamięci podręcznej lub śledzić długość swojej tabeli w inny sposób, aby tego uniknąć. – Xocoatzin
Pakiety paginacji na poziomie bazy danych za pomocą https://github.com/KnpLabs/knp-components –