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
first / last
pluck
groupBy
sortBy / sortByDesc
each — esegui su ogni elemento
flatMap
reduce — aggrega
reduceInto — aggrega su oggetto
Simile a reduce, ma la callback non deve restituire nulla. Utile per modificare direttamente un oggetto.
chunk — dividi in batch
Concatenazione dei metodi
Integrazione con Eloquent
I risultati delle query Eloquent sono sempre istanze diIlluminate\Database\Eloquent\Collection, che estende Collection.
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
Riepilogo
Metodi più usati
Metodi più usati
Collection vs funzioni array
Collection vs funzioni array
Le Collection migliorano molto la leggibilità.
Collection vs LazyCollection
Collection vs LazyCollection
- Collection: centinaia/migliaia di record, semplice.
- LazyCollection: decine di migliaia, memoria contenuta; combinala con
cursor(). get()restituisce una Collection,cursor()una LazyCollection.