24

Para qué sirven los Collections en Laravel

2971Puntos

hace 6 años

En PHP una de las estructuras de datos más usadas son los arreglos, sin embargo, una pequeña debilidad dentro de PHP es que los arreglos no son objetos, y tenemos que usar funciones auxiliares para manipularlos, además de eso algunas veces estas funciones son inconsistentes en el orden de los parámetros o en la forma de usarse.

Cuando trabajamos en Laravel este problema se soluciona con las Collections, este tipo de objeto especial de objeto viene a crear una especie de capa superior dentro de nuestros arreglos tradicionales. Considera que existe un modelo llamado User en tu proyecto de Laravel, cuando nosotros usamos el código: “User::all();“ lo que realmente nos está regresando no es un array, es más bien un objeto Collection.,lo más interesante de esto es que a pesar de ser un objeto, aún puedes seguir accediendo a cada elemento usando el índice correspondiente, por ejemplo:

<$users = Users::all(); // Esto regresa un Collection
$firstUser = $users[0];
>

Otra forma de crear una Collection es usando el método collect sobre un array regular:

<$users = collect([$user1, $user2]);>

Pero eso no es todo, además de poder usar este objeto como un arreglo, también cuenta con otros métodos especiales para acceder a elementos de una forma más natural:

<$firstUser = $users->first();
$lastUser = $users->last();
>

Buscar elementos

Otro punto en el que las Collections brillan es la forma en la que podemos buscar elementos, para esto Collection cuenta con diversos métodos que podemos utilizar, por ejemplo:

<$users = $users->where(‘name’, ‘Jhon Doe’);>

En este ejemplo la colección buscará todos los elemento que tengan la propiedad name con el valor ‘Jhon Doe’, pero eso no es todo, como esto regresa otra colección puedes encadenar los métodos:

<$users = $users->where(‘name’, ‘Jhon Doe’)->first();>

Recorrer los elementos

También existen métodos especiales que nos permitirán recorrer los elementos y usar un closure sobre ellos, por ejemplo:

<$filtered = $users->filter(function($user) {
	return $user->age > 18;
}); // Regresa a los users con edad mayor a 18

$mapped = $users->map(function($user) {
	return $user->email;
}); // regresa un nuevo arreglo solo con los emails de los usuarios

$pluckValues $users->pluck(‘email’); // regresa un nuevo arreglo solo con los emails de los usuarios
>

Obtener partes del arreglo

También es muy sencillo obtener sub grupos del arreglo, por ejemplo:

<$users->take(2); // regresa los primeros 2 elementos

$users->chunk(3); // regresa un arreglo de colecciones y cada una tendrá máximo 3 elementos
>

Matemáticas

Además de todo esto, las colecciones también nos ofrecen algunos métodos que nos permiten hacer operaciones aritméticas dentro de nuestro código, por ejemplo:

<collect([2, 3, 4, 5])->avg(); // nos regresa el valor promedio
$users->sum(‘age’); // Nos regresa la suma de todas las edades de los usuarios
>

Recuerda que esto solo es una parte de lo que te pueden ofrecer las colecciones usando Laravel, no olvides consultar la documentación y seguir aprendiendo acerca de lo que ofrecen.

Por supuesto que si lo que quieres es aprender Laravel desde 0 y conocer muchas más cosas que puedes hacer, pues olvides tomar el curso de Laravel que tenemos aquí en Platzi.

Hector
Hector
hectorbenitez

2971Puntos

hace 6 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
23894Puntos
6 años

acabo de temrinar el curso de php avanzado 😃 ujuuu y mañana comenzamos el de laravel

4
33612Puntos
6 años

Excelente aporte. Collections hace que laravel siga ganando terreno

3
101Puntos
6 años

Me encanta Laravel, estoy empezando a usarlo y es bacán cómo facilita el trabajo de programación. Una opción muy útil para backend.
Ojo! hay un error ortográfico en el último párrafo de la nota, para que lo corrijan si pueden c:

3
29645Puntos
6 años

Laravel es amor, es paz, es vida, realmente empezamos a usar Laravel en donde trabajo y nos facilito mucho las cosas, antes eramos php puro

5
3304Puntos
6 años

Cualquier cosa que no sea php puro es amor y paz 😄

1
29645Puntos
6 años

Poder hacer apps más rápidas con el combo ganador de Vue + Laravel lo vale

1
12384Puntos
6 años

"…una pequeña debilidad dentro de PHP es que los arreglos no son objetos…"
y en que lenguaje los arreglos son objetos?.. hasta donde sé los arreglos son animales distintos a los objetos… me da miedo esa frase… mmm.

1
1635Puntos
6 años

Hola Héctor, excelente post, pero el curso de PHP con Laravel lleva varios días subiendo y a la fecha de hoy (13 de enero) todavía no está disponible.

1
1133Puntos
6 años

Si algun dia me animara a programar en php seria por esta Libreria , gracias por el post