Skip to main content

Cosa sono le Collection

Illuminate\Support\Collection è un wrapper fluido per array di dati. Invece di chiamare separatamente le funzioni array di PHP, con una catena di metodi trasformi i dati in modo intuitivo.
Le Collection sono immutabili. Ogni metodo restituisce una nuova istanza senza modificare l’originale.

Creazione delle Collection

Helper collect()

Collection::make()

Collection::fromJson()

Metodi più usati

map — trasforma ogni elemento

filter / reject

Dopo filter() gli indici possono avere “buchi”. Chiama values() per riottenere una sequenza da 0.

first / last

pluck

groupBy

sortBy / sortByDesc

each — esegui su ogni elemento

flatMap

reduce — aggrega

Per somme semplici puoi usare sum().

reduceInto — aggrega su oggetto

Simile a reduce, ma la callback non deve restituire nulla. Utile per modificare direttamente un oggetto.
Per accumulare su array/scalari usa il passaggio per riferimento.

chunk — dividi in batch

Concatenazione dei metodi

Integrazione con Eloquent

I risultati delle query Eloquent sono sempre istanze di Illuminate\Database\Eloquent\Collection, che estende Collection.
Fai filtri e ordinamenti dove possono essere fatti dal DB (con query builder), non con le Collection: altrimenti carichi in memoria dati inutili.

Metodi specifici di Eloquent\Collection

Lazy Collection

Le Collection normali caricano tutti i dati in memoria. LazyCollection usa i generator PHP per processare un elemento alla volta. Utile con decine di migliaia di record.

Creare una LazyCollection

Batch di grandi volumi

cursor() recupera un record alla volta dal DB, risparmiando memoria; la connessione al DB resta aperta fino alla fine.

Paginazione con take e skip

Le Collection migliorano molto la leggibilità.
  • Collection: centinaia/migliaia di record, semplice.
  • LazyCollection: decine di migliaia, memoria contenuta; combinala con cursor().
  • get() restituisce una Collection, cursor() una LazyCollection.
Ultima modifica il 13 luglio 2026