Primero, ¿cómo funcionan los Accessors?
Ahora que sabemos que es un accessors, veremos como funcionan: por ejemplo, si tienes el modelo User y dos campos llamados nombre y apellido en la tabla de base de datos, podemos crear un Accessor en el modelo User para obtener el nombre completo del usuario.
public function getNombreCompletoAttribute() {
return $this->nombre . . $this->apellido;
}
return User::first()->toJSON();
El resultado se vera de la siguiente forma:
{
‘id’: 1,
‘nombre’: ‘Matias’,
‘apellido’: ‘Echazarreta’,
‘email’: ‘echazarreta@test.com’
, ‘created_at’: ‘2019-02-19 11:32:08’,
‘updated_at’: ‘2019-02-19 20:11:10’
}
¡Appends al rescate!
Cuando necesitamos responder los datos que nos brindan los Accessors, por ejemplo en una API, debemos utilizar los appends que nos tenemos disponible en el modelo Eloquent.
¿Cómo funcionan los appends? Muy fácil, solamente debemos crear la propiedad $appends a nuestro modelo (en este caso, en el modelo User) y agregar el nombre del campo que genera el accessor.
class User extends Model {
// …
protected $appends = [nombre_completo];
public function getNombreCompletoAttribute() {
return $this->nombre . . $this->apellido; }
// …
}
{
‘id’: 1,
‘nombre’: ‘Matias’,
‘apellido’: ‘Echazarreta’,
‘email’: ‘echazarreta@test.com’,
‘created_at’: ‘2019-02-19 11:32:08’,
‘updated_at’: ‘2019-02-19 20:11:10’,
‘nombre_completo’: ‘Matias Echazarreta’
}