Accesores y mutadores en Laravel

Accesores y mutadores

¡Nueva forma de definir accesores y mutadores en Laravel!

Como sabe, hay una manera de definir accesores y mutadores en laravel como se muestra a continuación.

Por ejemplo, si estamos en el modelo de usuario (App\Models\User):

Para Getter:

public function getFirstNameAttribute($value)
{
return ucfirst($value);
}

Para Setter:

public function setFirstNameAttribute($value)
{
$this->attribute[‘first_name’] = strtolower($value);
}

Hay una nueva forma de lograr este escenario, pero debo decir que Taylor Otwell realmente lo mencionó y es bastante útil y agradable.

Puede definir tanto setter como getter en un solo método como se muestra a continuación:

public function firtName() :Attribute
{
return new Attribute (
get: fn($value, $attributes) => $attribute[‘first_name’],
set: fn($value) => ‘first_name’ => $value
);
}

Y eso lo haría como otra forma de definir accesores y mutadores en una función de atributo. Si no desea escribir ninguno de estos, simplemente puede pasar un valor nulo para obtener/establecer.

Veamos dos ejemplos más para que el modelo de usuario lo resuelva:

public function fullName() :Attribute
 {
    return new Attribute(
       get: fn($value, $attributes) => $attributes[‘first_name’] . ' ' . $attributes[‘last_name’],       set: function($value) {
            [$firstName, $lastName] = explode(' ', $value);         return [
             ‘first_name’ => $firstName,
             ‘last_name’ => $lastName
         ];
      }
   );
 }
public function password() :Attribute
 {
     return new Attribute(
       get: null,
       set: fn($value) => bcrypt($value)
     );
 }

Eso es todo… ¿alguna pregunta?

Recent Post