El uso de arrays en PHP es de gran ayuda para manejar listas de información de forma ordenada, las cuales se pueden iterar. Adicionalmente, Laravel dispone de algunos helpers que permiten trabajar de una forma mucho más fácil y fluida con estos elementos. En esta lección te hablaremos sobre la clase Illuminate/Support/Collection
.
La clase Collection
permite convertir cualquier array en un objeto de colección de datos.
Cuando usamos métodos como get()
y all()
en un modelo de Eloquent, éstos devuelven una instancia de
que extiende de la clase Illuminate\Database\Eloquent\Collection
, las cuales ponen a nuestra disposición métodos adicionales a cuando trabajamos con «arreglos planos» de PHP.Illuminate\Support\Collection
Lo que quizás no sepas, es que tú puedes convertir cualquier array en un objeto Collection, y obtener las mismas funciones extra.
Implementando la clase Collection
Como siempre, para implementar una clase hacemos el llamado desde la cabecera del controlador:
<?php use Illuminate\Support\Collection;
Convirtiendo arreglos en colecciones
Vamos a crear un arreglo multidimensional:
<?php $var = ['numbers' => [1, 2, 3, 4, 5] , 'names' => ['jhon', 'doe', 'jane', 'dann'] ];
Tenemos dos elementos, el primero con números y el segundo con algunos nombres, si imprimimos en pantalla utilizando la función var_dump($var)
, dd($var)
o ddd($var)
, veremos algo como lo siguiente:
=> [ "numbers" => [ 1, 2, 3, 4, 5, ], "names" => [ "jhon", "doe", "jane", "dann", ], ]
Para convertir este array en una instancia de la clase Collection
usaremos:
<?php $collection = collect($var);
Si ahora imprimimos la variable $collection
podremos ver el nuevo objeto:
=> Illuminate\Support\Collection {#969 all: [ "numbers" => [ 1, 2, 3, 4, 5, ], "names" => [ "jhon", "doe", "jane", "dann", ], ], }
Accediendo a los métodos de la clase Collection
Recuerda que desde ahora estás trabajando con un objeto, por lo cual, si quieres volver a obtener en un «array» el conjunto de elementos de dicho objeto, puedes usar:
<?php $collection->all(); // retorna el arreglo original
Trabajando con el objeto Collection
obtendrás una interfaz mucho más conveniente, así como métodos adicionales.
Si, por ejemplo, deseas obtener el primer valor del arreglo, basta con usar:
<?php $collection->first();
=> [ 1, 2, 3, 4, 5, ]
De igual forma, puedes obtener el último valor con:
<?php $collection->last();
=> [ "jhon", "doe", "jane", "dann", ]
Para enviar, por ejemplo, una respuesta en formato JSON, puedes utilizar:
<?php $collection->toJson();
Devuelve:
=> "{"numbers":[1,2,3,4,5],"names":["jhon","doe","jane","dann"]}"
Estos son algunos pequeños ejemplos del uso de la clase Collection
, si deseas conocer un poco más puedes visitar la documentación oficial del API o la documentación oficial del framework Laravel.
De esta forma, ya puedes hacer operaciones de una forma más profesional y completa con tus arreglos en Laravel.
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.