Che cosa è una Laravel Collection? Lo vediamo insieme in un’altra nostra Super Guida Laravel!
La classe Illuminate\Support\Collection fornisce un facile e conveniente wrapper per lavorare con gli array di dati. Le Laravel Collection contengono metodi che rendono gli array molto potenti e facili da utilizzare. Inoltre, bisogna tenere presente, che anche i risultati forniti da Eloquent sono delle Laravel Collection.
Creare una Laravel Collection
Una Laravel Collection può essere creata a partire da un array utilizzando la funzione helper collect() nel seguente modo:
$collection=collect([2,6,7,8]);
Presentazione di alcuni metodi di una Laravel Collection
- filter()
Questo metodo filtra la collection utilizzando una callback nel modo seguente:
$collection = collect([2,6,7,8]); $filtered = $collection->filter(function ($value, $key) { return $value > 2; }); $filtered->all();
Il risultato sarà l’array [3,4].
- search()
Il metodo è utilizzato per cercare nella collection un determinato valore. Se il valore è presente nella collection viene restituita la posizione. Altrimenti viene restituito “false”
$names = collect(['Pippo', 'Pluto', 'Topolino', 'Paperino']); $names->search('Pluto');
Il risultato sarà 1.
- map()
Il metodo itera la laravel collection e passa ogni valore alla callback. La funzione di callback modifica gli item e restituisce una nuova collection con valori modificati
$collection = collect([1, 2, 3, 4, 5]); $multiplied = $collection->map(function ($item, $key) { return $item * 2; }); $multiplied->all();
Il risultato sarà [2,4,6,10].
- chunk()
Il metodo è utilizzato per suddividere una laravel collection in una collection più piccola di data dimensione
$prices = collect([18, 23, 65, 36, 97, 43, 81]); $prices = $prices->chunk(3); $prices->toArray();
Il risultato sarà [[18,23,65],[36,97,43],[81]].
- max()
Il metodo restituisce il massimo valore per una data chiave
$max = collect([['book' => 10], ['video' => 20],['video' => 30],['book' => 15]])->max('book');
Il risultato sarà 15.
Il metodo può essere utilizzato anche su un array senza chiave
$max = collect([1, 2, 3, 4, 5])->max();
In questo caso il risultato sarà 5.
- pluck()
Il metodo restituisce i valori per una determinata chiave
$collection = collect([ ['email' => 'pippo@gmail.com', 'name' => 'Pippo'], ['email' => 'pluto@gmail.com', 'name' => 'Pluto'], ]); $plucked = $collection->pluck('name'); $plucked->all();
Il risultato sarà [‘Pippo’,’Pluto’].
- contains()
Il metodo determina se la laravel collection contiene un dato valore
$collection = collect(['product' => 'Book', 'price' => 15]); $collection->contains('Book');
Il risultato sarà “true”.
Inoltre, al metodo, può essere passata una callback che deve verificare la condizione
$collection = collect([1, 2, 3, 4, 5]); $collection->contains(function ($value, $key) { return $value > 5; });
Il risultato sarà “false”.
Dai un’occhiata al catalogo corsi LaraMind oppure inizia un percorso one to one con uno dei nostri tutor!