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.
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:
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.
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.
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.
Page loaded in 28.44 ms