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!