Introducción
Al construir APIs con Laravel, a menudo necesitas convertir modelos y sus relaciones a arrays o JSON. Eloquent incluye métodos convenientes para realizar estas conversiones, así como funciones para controlar qué atributos aparecen en la representación serializada del modelo.Para una serialización JSON más robusta de modelos y colecciones Eloquent, consulta la documentación de Eloquent API Resources.
Modelos y arrays
Serialización a array
Para convertir un modelo y las relaciones que ha cargado a un array, usa el métodotoArray.
El método es recursivo, por lo que todos los atributos y todas las relaciones (incluidas las relaciones de las relaciones) se convertirán en un array.
attributesToArray puedes convertir solo los atributos del modelo sin las relaciones.
toArray sobre la instancia de la colección.
Serialización a JSON
Para convertir un modelo a JSON, usa el métodotoJson.
Al igual que toArray, toJson es recursivo, por lo que todos los atributos y relaciones se convierten a JSON.
También puedes indicar las opciones de codificación JSON soportadas por PHP.
toJson del modelo o colección.
Relaciones
Cuando un modelo Eloquent se convierte a JSON, sus relaciones cargadas se incluyen automáticamente como atributos del objeto JSON. Además, aunque los métodos de relación de Eloquent se definen en “camelCase”, los atributos JSON de las relaciones se convierten en “snake_case”.Control de la visibilidad de atributos
Ocultar atributos
A veces querrás restringir atributos como la contraseña dentro de la representación en array o JSON del modelo. Para ello, usa el atributoHidden en el modelo.
Los atributos listados en Hidden no se incluyen en la representación serializada.
Para ocultar una relación, añade el nombre del método de la relación al atributo Hidden del modelo Eloquent.
Exponer atributos
Con el atributoVisible puedes definir una “lista blanca” de atributos que deben incluirse en la representación en array o JSON del modelo.
Todos los atributos no presentes en Visible se ocultarán cuando el modelo se convierta a array o JSON.
Mostrar u ocultar atributos temporalmente
Para mostrar en una instancia concreta un atributo que normalmente está oculto, usamakeVisible o mergeVisible.
Estos métodos devuelven la instancia del modelo.
makeHidden o mergeHidden.
setVisible y setHidden.
Atributos añadidos (appends)
Al convertir un modelo a array o JSON, a veces querrás añadir atributos que no tienen una columna correspondiente en la base de datos. Para hacerlo, primero define un accessor para el valor.Appends.
Aunque los métodos de accessor se definen en “camelCase”, el nombre del atributo usa normalmente la representación serializada en “snake_case”.
appends, el atributo se incluye tanto en el array como en la representación JSON del modelo.
Los atributos de appends también respetan las configuraciones visible y hidden del modelo.
Añadir en tiempo de ejecución
En tiempo de ejecución puedes indicar a la instancia del modelo que añada atributos adicionales conappend o mergeAppends.
Con setAppends puedes sobrescribir por completo la lista de propiedades añadidas para una instancia concreta.
withoutAppends.
Serialización de fechas
Personalizar el formato de fecha por defecto
Sobrescribiendo el métodoserializeDate puedes personalizar el formato de serialización por defecto.
Este método no afecta al formato que se usa al guardar en la base de datos.