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 Illuminate\Database\Eloquent\Collection que extiende de la clase Illuminate\Support\Collection, las cuales ponen a nuestra disposición métodos adicionales a cuando trabajamos con «arreglos planos» de PHP.

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.

Da tus primeros pasos en Laravel de manera gratuita con nuestro curso Primeros Pasos con Laravel 6

Ver más

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