
🔍 رابطه One To One در لاراول یعنی چی؟
تو پایگاهدادهها، وقتی میخوای بین دو جدول فقط یک به یک رابطه باشه، از رابطه یکبهیک (One To One) استفاده میکنی. یعنی چی؟
هر رکورد از جدول A دقیقاً با یک رکورد در جدول B مرتبطه، و برعکس.
مثال؟
تصور کن توی سیستم کاربریات، هر کاربر فقط یک پروفایل داره. نه بیشتر، نه کمتر.
یا مثلاً هر کاربر فقط یک کارت ملی، یا یک تنظیمات امنیتی اختصاصی.
خب حالا چطور این رابطه رو توی لاراول تعریف کنیم؟ خیلی ساده:
📌 در مدل User (کاربر):
phpCopyEditpublic function profile() { return $this->hasOne(Profile::class); }
📌 و در مدل Profile (پروفایل):
phpCopyEditpublic function user() { return $this->belongsTo(User::class); }
📦 حالا خیلی شیک و تمیز میتونی بنویسی:
phpCopyEdit$user = User::find(1); echo $user->profile->bio;
✨ نکته حرفهای:
اگر بخوای با یک کوئری هم کاربر و هم پروفایل رو بگیری (برای جلوگیری از N+1 problem)، میتونی از Eager Loading استفاده کنی:
phpCopyEditUser::with('profile')->get();
🎯 کاربرد واقعی رابطه One To One:
هر کاربر یک پروفایل داره ✅
🔐 حتی بعضی وقتها برای جدا کردن اطلاعات حساس مثل توکنهای امنیتی، تنظیمات دو مرحلهای و... از این رابطه استفاده میشه تا امنیت و ساختار بهتر حفظ بشه.
📌 تو هم تجربهای از این رابطه تو پروژههات داری؟
کامنت بذار یا پست رو با کسی که تازه با لاراول شروع کرده به اشتراک بذار 💬❤️