Laravel provee de colecciones, que no son más que objetos que nos permiten hacer operaciones sobre arreglos de datos. Al ser objetos, las colecciones proveen de una interfaz fluida y de muchas más funciones que los arrays nativos de PHP. Es por ello que las consultas de Eloquent y Fluent retornan objetos de tipo “Collection” en vez de arrays.

A partir de Laravel 5.4, podemos utilizar una técnica llamada mensajes o funciones de “orden superior” en las colecciones y de esto te hablaré a detalle en la siguiente lección.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Vamos a definir una clase para los cursos con un título y con la opción de que sea premium o no:

Ahora creamos una colección de cursos con el método collect:

Usando métodos del objeto Collection podemos obtener los cursos premium, para este caso usaremos el método filter:

O los gratuitos usando el método reject:

Ahora a partir de Laravel 5.4 puedes hacerlo de esta nueva forma más rápida (usando una propiedad):

O usando métodos:

Nota que la propiedad y el método premium no están en el objeto Collection sino en los objetos que son parte de la colección.

Vale la pena mencionar que a partir de Laravel 5.3 también está disponible un método llamado partition en la clase Collection que permite dividir una colección en 2:

Así que si luego de obtener todos los cursos quisiera dividirlos en 2 listas (premium y gratuitos) entonces usaría partition, en vez de otro método.

Pero esta nueva técnica es muy útil, por ejemplo si tienes una colección de facturas y quieres pagarlas todas llamando al método pay en cada una:

El código es muy fácil de escribir y de leer.

Material relacionado

Si quedaste con dudas en esta lección por favor hazlas en nuestro Slack y te estaré contestando personalmente:

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Lección siguiente Componentes y slots en Laravel 5.4