Introducción
Cuando obtienes varios modelos con Eloquent, el resultado se devuelve comoIlluminate\Database\Eloquent\Collection.Como extiende
Illuminate\Support\Collection, puedes usar sin cambios todos los métodos de la colección base.
Métodos disponibles
Eloquent\Collection hereda todos los métodos de la colección base y añade además métodos específicos para modelos.
append / withoutAppends / setAppends
Permite manipular los atributos añadidos (appends) durante la serialización para toda la colección.
contains / diff / except / intersect / only
Realiza comprobaciones de pertenencia, diferencia, intersección, exclusión y extracción, basadas en instancias de modelo o claves primarias.
find / findOrFail
Busca en la colección ya obtenida por clave primaria.
fresh
Vuelve a obtener cada modelo de la colección con su estado más reciente de la base de datos.
load / loadMissing
Realiza eager loading de relaciones sobre una colección ya obtenida.
modelKeys
Devuelve la lista de claves primarias de los modelos de la colección.
makeVisible / makeHidden / mergeVisible / mergeHidden / setVisible / setHidden
Permite ajustar por colección qué atributos son visibles u ocultos durante la serialización.
partition
Divide la colección en dos Eloquent\Collection según una condición y devuelve por fuera una Illuminate\Support\Collection.
toQuery
Genera una consulta whereIn sobre las claves primarias de los modelos obtenidos, útil para actualizar o eliminar en bloque.
unique
Elimina los modelos duplicados con la misma clave primaria.
Conversión de una colección Eloquent a la colección base
collapse, flatten, flip, keys, pluck y zip devuelven Illuminate\Support\Collection.Además, si el resultado de
map no contiene modelos Eloquent, también se convierte en la colección base.
Colecciones personalizadas
Si necesitas una clase de colección específica para un modelo, la opción más clara es usar el atributo#[CollectedBy].
Atributo #[CollectedBy] (recomendado)
Método newCollection() (alternativa)
newCollection() o #[CollectedBy], la colección personalizada se devuelve donde normalmente se devolvería Eloquent\Collection.Si quieres aplicarlo a todos los modelos, define
newCollection() en un modelo base común.
Páginas relacionadas
Colecciones
Repasa primero las operaciones básicas de
Illuminate\\Support\\Collection.Introducción a Eloquent
Aclara los fundamentos de modelos y consultas antes de trabajar con colecciones Eloquent.