بخش ششم - Casts
کست یک ویژگی در مدلهای لاراول است که به شما امکان میدهد نوع دادهای که از ستونهای دیتابیس بازیابی میشود یا به دیتابیس ذخیره میشود را خودکار مدیریت کنید. لاراول از Casts برای تبدیل دادهها به نوعهای مختلف استفاده میکند تا توسعهدهندگان بدون نیاز به نوشتن کد اضافی، نوع داده موردنظر خود را مدیریت کنند.
برای تعریف Castهای پیشفرض، متد casts() را در مدل خود پیادهسازی میکنید.
protected function casts(): array
{
return [
'is_active' => 'boolean',
'birthday' => 'date',
];
}
این کست ها باعث می شود داده به طور خودکار به فرمت یا نوع مشخص شده تبدیل شوند، به عنوان مثال اگر فیلد is_active برابر 0 باشد به واسطه کست ها به false تبدیل می شود.
در لاراول، چندین نوع Cast پیشفرض وجود دارد که به شما امکان میدهد دادهها را به صورت خودکار به نوعهای مختلف تبدیل کنید. در زیر لیست این Castها آورده شده است:
'is_active' => 'boolean',
'age' => 'integer',
'price' => 'float',
'phone_number' => 'string',
'meta' => 'array',
'preferences' => 'json',
'settings' => 'object',
'tags' => 'collection',
'birthday' => 'date',
'created_at' => 'datetime',
'event_time' => 'timestamp',
'birthday' => 'immutable_date',
'created_at' => 'immutable_datetime',
'password' => 'encrypted',
علاوه بر Castهای پیشفرض، لاراول این امکان را به شما میدهد تا Casts سفارشی بسازید. این Castها به شما اجازه میدهند که تبدیلهای پیچیدهتری برای دادهها اعمال کنید.
برای ساخت یک Cast سفارشی، ابتدا باید یک کلاس ایجاد کنید که قرارداد (interface) CastsAttributes را پیادهسازی کند. این کلاس باید دو متد get() و set() را پیادهسازی کند.
برای این کار می توانید از دستور زیر استفاده کنید:
php artisan make:cast Uppercase
این کامند یک کلاس برای کست سفارشی شما ایجاد می کنید و شما می توانید متد ها آن را پیاده سازی کنید:
class Uppercase implements CastsAttributes
{
public function get($model, string $key, $value, array $attributes)
{
return strtoupper($value);
}
public function set($model, string $key, $value, array $attributes)
{
return strtolower($value);
}
}
درصورتی که یک فیلد را از دیتابیس فراخوانی کنیم و کست Uppercase ما روی آن اعمال شده باشد متد get اجرا خواهد شد و درصورت دخیره در یک فیلد دیتابیس دارای کست Uppercase متد set اجرا خواهد شد.
توضیح ورودی های متد set و متد get:
1- پارامتر model:
این پارامتر یک شیء مدل را شامل میشود که نشاندهنده مدل فعلی است که در حال تعامل با آن هستید. این پارامتر به شما اجازه میدهد به ویژگیهای مدل دسترسی داشته باشید.
2- پارامتر key:
این پارامتر نام ویژگی (attribute)ای است که Cast برای آن تعریف شده است. با این پارامتر، میتوانید بدانید که کدام فیلد از مدل در حال پردازش است.
3- پارامتر value:
این پارامتر مقدار فعلی ویژگی (attribute) را شامل میشود. هنگام استفاده از get()، مقدار بازیابیشده از دیتابیس در این پارامتر قرار دارد و در set()، مقدار جدیدی که کاربر برای آن ویژگی تنظیم کرده است.
4- پارامتر attributes:
این پارامتر آرایهای شامل همه ویژگیهای مدل و مقادیر آنها است. این پارامتر به شما امکان میدهد به سایر ویژگیهای مدل دسترسی پیدا کنید و بر اساس مقادیر آنها تغییراتی ایجاد کنید.
پس از تعریف Cast سفارشی، شما میتوانید آن را در متد casts() مدل خود استفاده کنید.
protected function casts(): array
{
return [
'name' => Uppercase::class,
];
}
نکته: در نسخه 10 به قبل کست ها به جای متد در یک پراپرتی ثبت میشوند:
protected $casts = [
'is_admin' => 'boolean',
];
▫️ 🟠
🔎 #laravel #لاراول #فصل_۴
💠 @AmirhDeveloper
.