Inicio > Desarrollo Web > Tutoriales de Laravel > Cómo Agregar Atributos Personalizados a Modelos Eloquent en Laravel

Cómo Agregar Atributos Personalizados a Modelos Eloquent en Laravel

Diego Cortés
Diego Cortés
June 20, 2018
Cómo Agregar Atributos Personalizados a Modelos Eloquent en Laravel

En Laravel, a menudo necesitamos agregar campos personalizados a nuestros modelos Eloquent para facilitar el manejo de datos. Por ejemplo, en un sistema de usuarios, podríamos tener dos columnas en la tabla users: name y lastname (nombre y apellido en español). Si necesitamos mostrar el nombre completo del usuario en lugar de concatenar estos dos campos cada vez, podemos simplificar el proceso creando un atributo personalizado en nuestro modelo.

Crear un Atributo Personalizado

Para ello, vamos a agregar un campo llamado full_name en nuestro modelo User, que concatenará los campos name y lastname. De esta manera, en lugar de concatenar manualmente en la vista, simplemente utilizaremos el atributo full_name. Este campo personalizado se creará usando un Accessor en Eloquent. Aquí está cómo hacerlo:

Definir el Accessor en el Modelo

Abre el archivo del modelo User y agrega el siguiente método:

public function getFullNameAttribute() {

    return $this->name . ' ' . $this->lastname;

} 

Este método getFullNameAttribute crea el atributo full_name que concatena el nombre y el apellido.

Acceder al Atributo Personalizado

 Una vez que hayas definido el Accessor, puedes acceder al atributo full_name así: 

$user = User::first();

{{ $user->full_name }}

Esto mostrará el nombre completo del usuario sin necesidad de concatenar manualmente en la vista.  

Retornar el Atributo Personalizado en JSON 

 Cuando se utiliza Eloquent para devolver datos en una API, el atributo personalizado full_name no se incluirá en la respuesta JSON por defecto. Para asegurarte de que tu modelo incluya este atributo en la respuesta, debes agregar el atributo al array $appends en tu modelo: 

protected $appends = ['full_name']; 

Con esta configuración, el modelo incluirá automáticamente el atributo full_name junto con los otros atributos en la respuesta JSON: 

return response()->json($user); 

De esta manera, la colección JSON retornada incluirá el atributo full_name, facilitando el manejo y visualización de los datos en tu API. 


Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categorías

Page loaded in 23.65 ms