Qu’est-ce qu’une Collection
Illuminate\Support\Collection est un wrapper fluide pour manipuler des tableaux.
Plutôt que d’enchaîner les fonctions natives, vous chaînez intuitivement les traitements.
Les collections sont immuables : chaque méthode retourne une nouvelle instance sans modifier l’originale. Vous manipulez en toute sécurité.
Créer une Collection
Helper collect()
Le plus courant.
Collection::make()
Équivalent, style façade.
Collection::fromJson()
Depuis une chaîne JSON — pratique pour les réponses d’API.
Méthodes courantes
map — Transformer chaque élément
filter / reject — Filtrer
filter conserve ce qui satisfait la condition, reject fait l’inverse.
first / last
pluck — Extraire un champ
groupBy
sortBy / sortByDesc
each — Effets de bord
Pour la journalisation, l’envoi de mails, etc. La collection n’est pas modifiée.
flatMap
Transforme chaque élément en tableau puis aplatit d’un niveau.
reduce
Réduit la collection à une seule valeur.
reduceInto
Comme reduce, mais la callback n’a pas besoin de retourner de valeur. Pratique pour muter un objet directement.
&).
chunk
Découpe en lots de taille fixe.
Chaînage
La force des collections : chaîner les opérations en une seule expression.Intégration avec Eloquent
Les résultats Eloquent sont desIlluminate\Database\Eloquent\Collection, qui héritent des collections de base.
Méthodes propres à Eloquent
Lazy Collections
Les collections classiques chargent tout en mémoire.LazyCollection utilise les générateurs PHP pour traiter élément par élément — précieux sur de gros volumes.
Créer une LazyCollection
Traitement de masse
cursor() récupère les lignes une par une, économisant la mémoire. La connexion DB reste ouverte jusqu’à la fin.Pagination avec take / skip
Récapitulatif
Méthodes fréquentes
Méthodes fréquentes
Collection vs fonctions natives
Collection vs fonctions natives
Les collections sont bien plus lisibles.
Collection vs LazyCollection
Collection vs LazyCollection
- Collection : quelques centaines à quelques milliers d’éléments. Simple et intuitif.
- LazyCollection : dizaines de milliers d’éléments et plus. Économe en mémoire. Idéal avec
cursor(). get()retourne une Collection,cursor()retourne une LazyCollection.