رابطه یک به یک در لاراول

یکی از عناصر اساسی فریم ورک لاراول، الوکوئنت Eloquent ORM  است. لاراول برای برقرار کردن رابطه بین دو یا چند جدول در دیتابیس از Eloquent ORM استفاده می کند. این فریم ورک محبوب برای ایجاد ارتباط بین مدل های الوکوئنت، روش های کابر پسند بسیاری فراهم نموده است. در این جلسه یکی از این رابطه ها بنام رابطه یک به یک در لاراول با یک مثال عملی، مورد مطالعه قرار می گیرد.

آموزش رابطه یک به یک در لاراول One To One

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

 برای مثال فرض کنید جدولی داریم به نام users که برای احراز هویت کاربران، به کار می رود. می خواهیم اطلاعات دیگر کاربر از قبیل تاریخ تولد، بیو و آدرس شبکه های اجتماعی را نیز ذخیره کنیم. می توانیم این اطلاعات را در همان جدول users در داخل 4 ستون دیگر ذخیره کنیم. اما با این کار جدول users شلوغ و اندکی کثیف خواهد شد.

برای تمیز نگه داشتن جداول، می خواهیم نام و کلمه عبور و ایمیل کاربران را در جدول users  و اطلاعات پروفایل کاربر را در جدولی دیگر بنام profiles ذخیره کنیم.

می دانیم که باید هر کاربر تنها یک profile  خواهد داشت و هر profile تنها متعلق به یک user  خواهد بود.

ایجاد مدل ها و جداول

می دانیم که هنگام نصب لاراول، مدل User و مایگریشن users بصورت اتوماتیک در پروژه ایجاد می شود و ما فقط نیاز به ایجاد مدل Profile و مایگریشن اش می باشیم. می توانیم با یک دستور هر دو را بسازیم :

سپس برای ایجاد رابطه یک به یک migration مربوط به جدول profiles را هم باز می کنیم و اینگونه تغییر می دهیم :

کلید خارجی یا foreign key

در خط پنجم اقدام به تعریف کلید خارجی یا foreign key می کنیم. کلید خارجی وظیفه اتصال و ارتباط دو جدول را به عهده دارد و هنگام ثبت یک profile جدید، مقدار این کلید دقیقا برابر id  مربوط به  user مربوط به این   profileخواهد بود. نوع این کلید باید با id  جدول users مطابقت داشته باشد زیرا این کلید به آن id  اشاره می کند. مثلا در این مورد چون نوع id  در جدول users برابر با bigIncrements بود، نوع کلید خارجی را هم bigInteger قرار دادیم.

در خطوط آخر دقیقا اشاره کردیم که کلید خارجی مربوط به کدام ستون از کدام جدول است :

عبارت های OnDelete هم اشاره می کنند که هنگام حذف یک user پروفایلش نیز از جدول profiles حذف گردد.

سپس دستور زیر :

بررسی رابطه یک به یک در phpmyadmin :

اگر در phpmyadmin روی دیتابیس تان کلیک کرده و به سربرگ یا همان منوی Designer  بروید با شکل زیر مواجه خواهید شد :

دیاگرام رابطه یک به یک در لاراول

Laravel One to One Diagram

این شکل نشانگر ارتباط بین دو جدول و نیز ارتباط ستون id از جدول users  و ستون user_id از جدول profiles است. درواقع این ارتباط زمانی ایجاد شد که کلید خارجی تعریف کردیم. این شکل به خوبی نشان می دهد که user_id همان id در است.

تعریف رابطه یک به یک :

 

در  مدل User  متد زیر را تعریف می کنیم  :

در مدل Profile  :

فراخوانی اطلاعات از رابطه OneToOne لاراول

حال که رابطه بین دو جدول را برقرار کرده اید می توانید به اطلاعات پروفابل هر کاربر با صدا زدن متد profile البته بدن پرانتز دسترسی پیدا کنید :

 لاراول برای فراخوانی پروفایل کاربر، به جدول profiles سر زده و در ستون user_id دنبال عددی برابر id  کاربر خواهد گشت.

ایجاد رابطه یک به یک برای user

برای ایجاد پروفایل برای یک کاربر می توان از دو روش استفاده کرد :

روش اول : استفاده از متد save()

روش دوم : استفاده از متد create()

حذف رابطه یک به یک از user

حذف پروفایل یک کاربر همانند ایجاد ارتباط برای آن است. با این تفاوت که به جای متد create از متد delete استفاده خواهیم کرد :

حال اگر dd بگیریم :

عبارت null در صفحه را مشاهده خواهید نمود.

نکته

چون هنگام تعریف کلید خارجی از عبارت onDelete(‘cascade’)  استفاده کردیم، هنگام حذف یک کاربر، پروفایل آن نیز از جدول profiles  حذف خواهد شد.

 

برای مشاهده جلسه چهاردهم (رابطه یک به چند در لاراول) کلیک کنید.


مشخصات فیلم آموزشی

نام اثر : فیلم آموزش صفر تا صد لاراول – جلسه سیزدهم: رابطه یک به یک در لاراول

 مدرس : مهندس سالار عباپور

مدت زمان : 37 دقیقه

زبان آموزش : فارسی

حجم فایل : یک فایل با حجم 110 مگا بایت

فرمت ویدئو : MP4 با کیفیت بالا


پیش نمایش

درباره محصول

فیلم آموزش صفر تا صد لاراول – جلسه سیزدهم: رابطه یک به یک در لاراول 6 محصولی است که در این پست به آن پرداخته شده است.  در این آموزش به توضیح و معرفی رابطه ها در لاراول پرداخته شده است است. این محصول بصورت کامل توسط گروه پشتیبانی پی استور تست و بازبینی شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد.

 

[WPSM_AC_SH id=6136]

1 دیدگاه برای رابطه یک به یک در لاراول

  1. امین جلیل زاده

    نظرات و پیشنهادات خود را با ما در میان بگذارید.

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *