Accessors & Mutators - автоматична обробка даних
Форматуєте дати у кожному контролері? Перетворюєте імена?
Accessors і Mutators роблять це в моделі.
Accessors - трансформація при читанні Mutators - трансформація при записі
Laravel 9+ синтаксис:
Через клас Attribute.
Переваги:
- Логіка в одному місці
- Єдиний формат даних
- Модель сама відповідає за трансформації
Порада: Ідеально для паролів, форматування дат і тексту.
use Illuminate\Database\Eloquent\Casts\Attribute;
class User extends Model
{
// Accessor
protected function name(): Attribute
{
return Attribute::make(
get: fn($value) => ucfirst($value),
);
}
// Mutator
protected function password(): Attribute
{
return Attribute::make(
set: fn($value) => bcrypt($value),
);
}
// Обидва
protected function firstName(): Attribute
{
return Attribute::make(
get: fn($value) => ucfirst($value),
set: fn($value) => strtolower($value),
);
}
}