24

Para qué sirven los Collections en Laravel

2959Puntos

hace 5 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

2959Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
23787Puntos

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

4
33517Puntos

Excelente aporte. Collections hace que laravel siga ganando terreno

3
29642Puntos

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
5 años

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

1
29642Puntos
5 años

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

3
101Puntos

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:

2
7359Puntos

Hola un cordial saludo a todos los estudiantes de la plataforma Platzi, soy estudiante de ingeniería informática y estoy cursando los cursos de Platzi en programacion, me gustaría poder completarlos todos de ser posible porque honestamente veo que esto es algo que me gustaría hacer en un presente y en un futuro y quisiera perfeccionarlo, pero como no tengo los recursos suficientes por cuestión país y calidad de vida que vivo y viven los venezolanos quisiera contar con su ayuda para que se suscriban desde mi link ya que pagar 30$ al mes se me escapa de las manos y la solución que encuentro es que podamos actuar en conjunto para poder ganar ambos 1 mes gratis, nos estaríamos ayudando mutuamente y por un motivo de educación que nos servirá siempre en nuestras vida, gracias a todos los que puedan aportar y les deseo un éxito enorme.

https://platzi.com/r/webins/

1
1133Puntos

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

1
1635Puntos

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
12135Puntos

"…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.