TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #111 684
فصل چهار - مدل‌ها و Eloquent ORM

بخش پنجم - پراپرتی های مدل

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, #PHP, #لاراول, #فصل_۴

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • 👍 4
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →