Collections
Las Collections son una de las herramientas mas potentes de Laravel. Proporcionan una API fluida y encadenable para trabajar con arrays de datos, inspirada en la programacion funcional.
Uso basico
use Illuminate\Support\Collection;
$collection = collect([1, 2, 3, 4, 5]);
// Transformaciones
$doubled = $collection->map(fn ($item) => $item * 2); // [2, 4, 6, 8, 10]
$evens = $collection->filter(fn ($item) => $item % 2 === 0); // [2, 4]
$sum = $collection->sum(); // 15
$first = $collection->first(fn ($item) => $item > 3); // 4
Con modelos Eloquent
$users = User::all(); // Retorna una Collection de Eloquent
// Agrupar por rol
$grouped = $users->groupBy('role');
// Extraer un campo especifico
$emails = $users->pluck('email');
// Transformar para una API
$data = $users->map(fn ($user) => [
'name' => $user->name,
'avatar' => $user->avatar_url,
'posts_count' => $user->posts->count(),
]);
// Metodos de agregacion
$avgAge = $users->avg('age');
$maxSalary = $users->max('salary');
Metodos populares
$collection->each(fn ($item) => /* ... */); // Iterar sin transformar
$collection->contains('value'); // Comprobar existencia
$collection->unique('field'); // Eliminar duplicados
$collection->sortBy('name'); // Ordenar
$collection->chunk(3); // Dividir en grupos
$collection->flatMap(fn ($item) => /* ... */); // Map + flatten
$collection->pipe(fn ($col) => /* ... */); // Pasar la coleccion completa
Las Collections eliminan la necesidad de usar funciones de array de PHP como array_map, array_filter o array_reduce, ofreciendo una sintaxis mucho mas legible y mantenible.