TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #317 185
فصل چهار - مدل‌ها و 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 #لاراول #فصل_۴
💠 @AmirhDeveloper
.
  • ❤ 1
  • 🔥 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 →