16. Mutadores y Accesores
Los mutadores te permiten modificar los valores de los atributos antes de guardarlos en la base de datos, mientras que los accesores te permiten acceder a los valores de los atributos de manera formateada. En este capítulo, te enseñaremos cómo definir mutadores y accesores en tus modelos Eloquent, cómo utilizarlos para modificar y acceder a los valores de los atributos y cómo utilizar los mutadores y accesores en las vistas de tu aplicación. Además, conocerás cómo utilizar los mutadores y accesores para encriptar y desencriptar datos sensibles, y cómo utilizarlos para formatear los valores de fecha y hora. Con estos conocimientos, podrás modificar y acceder a los valores de los atributos de tus modelos Eloquent de manera controlada en tus aplicaciones Laravel utilizando mutadores y accesores.
8 comentarios
Inicia sesión para comentar
Comentarios:
-
Victoria León Estañol hace 4 meses
Hola, Como se llama la extension que estas usando para que te acomplete la información?
-
Juan Hernandez hace 6 meses
Para los que tengan error yo lo solucione con el comentario que puso @Johaan Sting pero también me salí de tinker y lo Inicie de nuevo el tinker y ya me guarda en minúscula
PD: yo hice la prueba con el correo, en vez de name le cambie a email. -
Johann Stig hace 6 meses
Hola Victor, no me funcionó de la forma que lo hiciste ni tampoco por la sugerida por Gerardo Vera. También estoy usando Laravel 9. Qué puede estar pasando ?
-
Gerardo Vera Velasco hace 6 meses
No sé por qué no me funcionó pero lo hice de otra forma, y ya funcionó. Estoy trabajando con Laravel Sail (Laravel 9), no sé si tenga algo que ver, de igual forma les comparto la manera en que lo hice.
use Illuminate\Database\Eloquent\Casts\Attribute;
protected function name(): Attribute{
return Attribute::make(
get: fn ($value) => ucwords($value),
set: fn ($value) => strtolower($value)
);
}
-
Edgardo hace 7 meses
Me gusta tu estilo de explicar calmadamente, vengo de un curso de Laravel que me estresó por ser de la versión 6 y mas encima el profesor hablaba como si tratara con expertos.
-
Walter hace 8 meses
📌 La información que vamos a almacenar en nuestra BD, la mayoría de las veces, va a llegar desde formularios.
📌 Mutadores
Se colocan dentro de los Modelos encargados de almacenar la información que les llega y transformarla antes de guardarla.
Para agregar un mutador lo primero es agregar en el Modelo User.php en la parte de arriba una definición:
use Illuminate\Database\Eloquent\Casts\Attribute;
Luego incluimos un método dentro de la clase User, debe tener el mismo nombre que el atributo que quiera modificar.
protected function name(): Attribute { return new Attribute( set: function($value) { return strtolower($value); } ); }
📌 Accesores
Hace el proceso inverso que los mutadores, es decir, cuando recuperamos información de la BD la modifica antes de presentarla.
En el mismo lugar donde agregamos set: ahora añadimos:
get: function($value) { return ucwords($value); }
Podemos usar la notación de función flecha:
get: fn($value) => ucwords($value)
📌 Formas legacy que podemos encontrar para las definiciones de mutadores y accesores
public function setNameAttribute($value) { $this->attributes['name'] = strtolower($value); } public function getNameAttribute($value) { return ucwords($value); }
-
Francisco Peña hace 8 meses
El mejor profesor de Laravel de todos los que vi
-
Daniel Torres hace 10 meses
Tener en cuenta que esta clase es para Laravel 9. Al final se explica cómo realizarlo para versiones anteriores al 9.