2012-12-05 15 views
5

Vorrei usare Doctrine ORM e un metodo di paginazione in Symfony. KnpPaginatorBundle sembra semplice e facile da usare. Uso anche i repository Doctrine perché le query possono essere facilmente riutilizzate e testate.Come posso utilizzare in modo efficiente la paginazione con doctrine in Symfony 2?

Questo pacchetto funziona come gli altri che ho trovato. Ha bisogno del generatore di query come parametro. C'è un modo migliore per farlo se non assegnare a ciascun repository la funzione di impaginatore come parametro (o null)? Non voglio impaginare ogni risultato di query, quindi non penso che la soluzione descritta sia la migliore e sto cercando delle congetture.

+3

In termini di prestazioni, è meglio impaginare i risultati a livello di database, in modo da evitare il sovraccarico di mappare i risultati sugli oggetti, ridurre il traffico di rete e il server di database non avrà bisogno di leggere/filtrare molti record. Non sono sicuro di come funzioni quel bundle, ma puoi controllare quali query vengono eseguite e vedere se l'impaginazione ha luogo sulla query stessa. Se lo fa, sei a posto. Se non si desidera creare più volte le stesse query, definirli su un repository http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes – Xocoatzin

+0

Ho dimenticato di menzionare, se si impagina a livello di database, è necessario contare tutti i record in modo da poter calcolare quante pagine ci sono. Potresti usare una cache per questo o tenere traccia della lunghezza del tuo tavolo in un altro modo per evitarlo. – Xocoatzin

+0

I bundles impagina a livello di database utilizzando https://github.com/KnpLabs/knp-components –

risposta

Problemi correlati