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

بخش سوم - روابط - قسمت دوم

رابطه One-to-Many (یک به چند)


یکی از رایج‌ترین روابط در پایگاه داده است. این رابطه زمانی استفاده می‌شود که یک رکورد در یک جدول می‌تواند به چندین رکورد در جدول دیگری مرتبط باشد.

مثال:
- یک کاربر می‌تواند چندین پست داشته باشد.
- یک پست می‌تواند چندین نظر داشته باشد.

1- ساختار جداول:
برای پیاده‌سازی رابطه یک به چند، ما نیاز به دو جدول داریم: یکی به عنوان مدل والد و دیگری به عنوان مدل فرزند. جدول فرزند یک کلید خارجی (foreign key) دارد که به مدل والد مرتبط است.

مثال:
جدول users اطلاعات کاربران را نگهداری می‌کند و یک فیلد id به عنوان primary key دارد.
جدول posts اطلاعات پست‌های کاربران را نگهداری می‌کند و دارای یک ستون به نام user_id است که به کلید خارجی در جدول users اشاره می‌کند.

2- ایجاد مدل‌ها:

1-مدل User، نشان‌دهنده جدول users است. این مدل می‌تواند چندین پست داشته باشد، بنابراین رابطه یک به چند از طریق متد hasMany تعریف می‌شود. این متد مشابه hasOne است اما چندین رکورد را تحت تاثیر قرار می دهد.
public function posts()
{
return $this->hasMany(Post::class);
}


2- مدل Post نشان‌دهنده جدول posts است. هر پست به یک کاربر تعلق دارد، بنابراین رابطه یک به چند از سمت پست با متد belongsTo تعریف می‌شود.
public function user()
{
return $this->belongsTo(User::class);
}


3- پیاده‌سازی رابطه:
برای دسترسی به تمامی پست‌های یک کاربر، می‌توانید از پراپرتی posts استفاده کنید که رابطه hasMany را تعریف کرده است.
$user = User::find(1);
$posts = $user->posts;


برای دسترسی به کاربر مربوط به یک پست، می‌توانید از پراپرتی user استفاده کنید که رابطه belongsTo را تعریف کرده است.
$post = Post::find(1);
$user = $post->user;


برای ایجاد یک پست جدید برای یک کاربر، می‌توانید از متد posts() استفاده کنید و پست را به آن کاربر مرتبط کنید.
$user = User::find(1);

$post = new Post([
'title' => 'My Third Post'
]);

$user->posts()->save($post);


و حتی می‌توانید پست‌های یک کاربر را به‌سادگی به‌روزرسانی کنید.
$user = User::find(1);
$post = $user->posts()->first();
$post->title = 'Updated Title';
$post->save();


با استفاده از روابط در لاراول بدون استفاده از عملیات های پیچیده رکورد های مرتبط به هم بازیابی/حذف/ویرایش یا ایجاد می شوند.

رابطه‌های یک به یک و یک به چند، دو نمونه از ساده‌ترین روابط در لاراول هستند که بدون آن‌ها نیز می‌توانیم کوئری‌هایمان را بنویسیم، هرچند کار کمی پیچیده‌تر خواهد بود. اما در قسمت‌های بعدی با روابط پیچیده‌تر و پیشرفته‌تری آشنا خواهیم شد که اهمیت بیشتری در ساده‌سازی و بهینه‌سازی کوئری‌ها دارند.

🔖 #Laravel, #PHP, #لاراول, #فصل_۴

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • ❤ 2
  • 👍 2
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 →