TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #324 209
فصل چهار - مدل‌ها و 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 #لاراول #فصل_۴
💠 @AmirhDeveloper
.
  • 👍 2
  • 🔥 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
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 →