Mutator یا میوتیتور در لاراول الوکوئنت هنگام تنظیم Attribute یک مدل، مقدار را پیش از ورود به حالت مدل یا ذخیره‌سازی تبدیل می‌کند. مفاهیم Setter و تبدیل داده در فریم‌ورک‌های مختلف وجود دارند، ولی تعریف Mutator به این شکل مربوط به الوکوئنت است.

مثال در مدل Customer

use Illuminate\Database\Eloquent\Casts\Attribute;
class Customer extends Model {
    protected function phone(): Attribute {
        return Attribute::make(
            set: fn (string $value) => preg_replace('/\D+/', '', $value),
        );
    }
}

$customer->phone = '+98 912 000 0000';
$customer->save();

مثال بالا صرفاً کاراکترهای غیرعددی را حذف می‌کند. برای شماره تلفن بین‌المللی واقعی بهتر است از کتابخانه معتبر استانداردسازی شماره و قواعد کشور استفاده شود.

اکسسور و میوتیتور در یک Attribute

protected function sku(): Attribute {
    return Attribute::make(
        get: fn (string $value) => strtoupper($value),
        set: fn (string $value) => strtolower(trim($value)),
    );
}

اصطلاحات مرتبط: اکسسور، الوکوئنت، مدل، نوع داده.