بخش پنجم - پراپرتی های مدل
1- پراپرتی table
نام جدول دیتابیس مرتبط با مدل را مشخص میکند. بهصورت پیشفرض، لاراول نام مدل را با حروف کوچک و به صورت جمع تبدیل میکند.
protected $table = 'my_custom_table';
2- پراپرتی primaryKey
برای مشخص کردن نام ستون کلید اصلی جدول استفاده میشود. بهصورت پیشفرض، از ستون id به عنوان کلید اصلی استفاده میکند.
protected $primaryKey = 'user_id';
3- پراپرتی keyType
نوع داده کلید اصلی را مشخص میکند. بهصورت پیشفرض، لاراول از نوع int برای کلید اصلی استفاده میکند.
protected $keyType = 'string';
4- پراپرتی incrementing
مشخص میکند که آیا کلید اصلی به صورت خودکار افزایش مییابد یا خیر. بهصورت پیشفرض، این ویژگی true است و کلید اصلی افزایش مییابد.
public $incrementing = false;
5- پراپرتی timestamps
مشخص میکند که آیا ستونهای created_at و updated_at بهصورت خودکار مدیریت شوند یا خیر. بهصورت پیشفرض، این ویژگی true است.
public $timestamps = false;
6- پراپرتی dateFormat
فرمت ذخیرهسازی تاریخها در دیتابیس را مشخص میکند. بهصورت پیشفرض، از فرمت Y-m-d H:i:s استفاده میکند.
protected $dateFormat = 'U';
7- پراپرتی connection
مشخص میکند که مدل باید از کدام اتصال دیتابیس استفاده کند. بهصورت پیشفرض، مدلها از اتصال اصلی که در فایل config/database.php تعریف شده است استفاده میکنند.
protected $connection = 'mysql2';
8- پراپرتی fillable
لیستی از ستونهایی را مشخص میکند که در هنگام انتساب جمعی (Mass Assignment) اجازه مقداردهی دارند. این ویژگی برای جلوگیری از حملات Mass Assignment بسیار مهم است.
protected $fillable = ['name', 'email', 'password'];
9- پراپرتی guarded
برعکس fillable عمل میکند و ستونهایی که نباید بهصورت جمعی مقداردهی شوند را مشخص میکند. اگر guarded را خالی بگذارید، به معنای آن است که همه ستونها محافظت شدهاند.
protected $guarded = ['is_admin'];
10- پراپرتی hidden
مشخص میکند که کدام ستونها در هنگام تبدیل مدل به آرایه یا JSON باید مخفی شوند و نمایش داده نشوند.
protected $hidden = ['password', 'remember_token'];
11- پراپرتی visible
برعکس hidden عمل میکند و مشخص میکند که فقط ستونهای مشخصشده در خروجی JSON یا آرایه نمایش داده شوند. سایر ستونها مخفی خواهند بود.
protected $visible = ['name', 'email'];
12- پراپرتی dates
مشخص میکند که کدام ستونها به عنوان تاریخ در نظر گرفته شوند و بهطور خودکار به Carbon تبدیل شوند. بهصورت پیشفرض، ستونهای created_at و updated_at به عنوان تاریخ مدیریت میشوند.
protected $dates = ['birthday'];
13- پراپرتی touches
برای بهروزرسانی زمان مدلهای مرتبط استفاده میشود. اگر یک مدل دارای رابطهای باشد که باید هنگام تغییر مدل فرزند، زمان بهروزرسانی (updated_at) مدل والد نیز تغییر کند، میتوانید از این ویژگی استفاده کنید.
protected $touches = ['post'];
14- پراپرتی perPage
تعداد رکوردهایی که در هر صفحه برای صفحهبندی (pagination) نمایش داده میشوند را تنظیم میکند. بهصورت پیشفرض، مقدار perPage برابر 15 است.
protected $perPage = 20;
15- پراپرتی morphClass
برای روابط Polymorphic استفاده میشود و مشخص میکند که لاراول چه مقداری را در ستون *_type قرار دهد. بهصورت پیشفرض، نام کامل کلاس مدل در ستون *_type ذخیره میشود.
protected $morphClass = 'post';
16- پراپرتی relationResolvers
برای بازنویسی روابط در مدلها استفاده میشود. اگر بخواهید نحوه فراخوانی یک رابطه را تغییر دهید یا بهصورت دلخواه تعریف کنید، میتوانید از relationResolvers استفاده کنید.
protected $relationResolvers = [
'profile' => 'resolveProfile',
];
public function resolveProfile()
{
return $this->hasOne(Profile::class);
}
17- پراپرتی foreignKeyType
برای تعریف نوع داده کلیدهای خارجی استفاده میشود.
protected $foreignKeyType = 'string';
تعدادی از پراپرتی در پست های بعدی توضیح داده می شود.
توجه داشته باشید که مدل ها، پراپرتی ها و متد های قابل Override زیادی دارند که در این دوره نام برده نمی شوند.
▫️ 🟠
🔎 #laravel #لاراول #فصل_۴
💠 @AmirhDeveloper
.