Qu’est-ce que la pagination
La pagination de Laravel est intégrée au query builder et à l’ORM Eloquent : aucune configuration n’est nécessaire. La page courante est extraite automatiquement du paramètrepage de la requête HTTP et ajoutée aux liens générés.
Le HTML par défaut est compatible avec Tailwind CSS ; Bootstrap est aussi disponible.
Trois types de pagination
Utilisation de base
Pagination du query builder
Pagination Eloquent
simplePaginate
Si la requêteCOUNT(*) du total n’est pas nécessaire (uniquement liens « précédent »/« suivant »), utilisez simplePaginate() pour plus d’efficacité.
cursorPaginate (pagination par curseur)
La pagination par curseur remplaceOFFSET par une clause WHERE, ce qui offre de bonnes performances pour de grandes quantités de données. Idéale pour les UI en défilement infini.
Comparaison OFFSET vs. curseur
Implémentation dans un contrôleur
Affichage des liens de pagination dans Blade
links() génère automatiquement le HTML des liens. Par défaut, trois pages avant et trois pages après la page courante sont affichées.
Ajuster le nombre de liens affichés
onEachSide() permet de modifier le nombre de liens de chaque côté.
Nombre d’éléments par page passé par la requête
Plusieurs paginateurs sur la même page
Si deux paginateurs cohabitent, ils entreront en conflit sur le paramètrepage. Renommez-le via le troisième argument.
Personnalisation de l’URL
Modifier l’URL de base
Ajouter des paramètres de requête
Ajouter un fragment de hachage
Réponse API (JSON)
Retourner un paginateur directement depuis une route ou un contrôleur le convertit automatiquement en JSON.Combinaison avec les API Resources
Pour envelopper le résultat depaginate() dans une collection de resource API, passez-le à UserResource::collection().
Le JSON de
cursorPaginate() contient next_cursor et prev_cursor au lieu de numéros de page. Le client API doit renvoyer ces valeurs dans le paramètre cursor de la requête suivante.Vues de pagination personnalisées
Spécifier la vue directement
Remplacer la vue par défaut
Publiez d’abord les vues officielles, puis personnalisez-les.resources/views/vendor/pagination/ :
tailwind.blade.php— Par défaut (Tailwind CSS)bootstrap-5.blade.php— Bootstrap 5simple-tailwind.blade.php— Pour simplePaginate- …
tailwind.blade.php ou créez une nouvelle vue et déclarez-la dans AppServiceProvider.
Utiliser Bootstrap CSS
Pour utiliser Bootstrap au lieu de Tailwind, déclarez-le dansboot() du AppServiceProvider.
Créer manuellement un paginateur
Pour paginer des données existantes (par exemple un tableau), instanciez directement la classe.Méthodes courantes de l’instance
Récapitulatif
Choix du type de pagination
Choix du type de pagination
paginate()— Quand vous avez besoin du total et des liens numérotés (liste standard).simplePaginate()— Quand « Précédent » / « Suivant » suffit (plus rapide).cursorPaginate()— Grands volumes, défilement infini, écritures fréquentes (meilleures performances).
Pattern d'affichage Blade
Pattern d'affichage Blade
paginate() à la vue et affichez les liens avec links().
La page courante est détectée automatiquement via le paramètre page.Pagination pour une API
Pagination pour une API
Retourner directement un paginateur produit du JSON automatiquement.
Combinez avec une API resource via
UserResource::collection($paginator).
La réponse contient data (tableau des enregistrements) et diverses métadonnées.