El framework Laravel incluye una clase Collection que nos permite realizar operaciones con arreglos de datos, de una forma mucho más sencilla y fácil de leer. En esta serie de tutoriales te enseñaré cómo trabajar con esta clase y con el patrón Arquitectura en Pipeline.

Notas: Ambar Quintana

Creando una nueva colección

Podemos crear una nueva colección de varias formas:

Usando new Collection:

//
$collection = new Collection ($values);

Mediante el método estático make de Collection:

//
$collection = Collection::make($values);

O a través del helper collect:

//
$collection = collect($values);

Cada forma recibe como primer argumento el arreglo de datos que deseas convertir en una colección.

No olvides importar la clase Illuminate\Support\Collection al inicio del archivo PHP cuando uses new Collection y Collection::make.

Esto va a generar una nueva instancia de Illuminate\Support\Collection, la cual nos permitirá trabajar con todos los métodos que esta clase coloca a nuestra disposición.

Método all()

Este método nos devuelve el arreglo que se encuentra almacenado dentro de la colección:

$collection = collect([1, 2, 3, 4]);
$collection->all();
// [1, 2, 3, 4]

Método filter()

Permite filtrar los datos dentro de una colección. Recibe como primer argumento una función de retorno donde podemos agregar la lógica que deseamos aplicar en nuestro filtro:

$values = collect([1, 2, 3, 4]);

$collection = $values->filter(function ($value) {
    return $value % 2 == 0;
});

$collection->all();
// [1 => 2, 3 => 4]

Los valores que no pasen la comprobación de tu filtro serán eliminados de la colección resultante.

Método map()

Este método itera la colección y pasa cada valor a una función callback dada, en la cual puedes modificarlos y devolverlos, formando así una nueva colección con los elementos modificados:

$values = collect([1, 2, 3, 4]);

$collection = $values->map(function ($value) {
    return $value * 2;
});

$collection->all();
// [2, 4, 6, 8]

Material relacionado

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección siguiente Ventajas de usar las colecciones de Laravel