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)),
);
}
اصطلاحات مرتبط: اکسسور، الوکوئنت، مدل، نوع داده.