در حال بارگذاری ... .

Polymorphic Relationships

پلی مورفیسم

برای روشن شدن بحث  Polymorphic  با یک مثال شروع می کنیم.

فرض کنید ما کاربرانی داریم که هر کاربر نام و یک تصویر دارد . همچنین پست هایی داریم که هر پست یک عنوان و یک تصویر نیاز دارد.

دو راه حل برای ذخیره تصاویر مربوط به جداول داریم .

اول اینکه یک جدول برای ذخیره تصاویر هر جدول به صورت جداگانه در نظر بگیریم . و یا از ی جدول برای این کار استفاده کنیم .

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

نام گذای ستون ها مربوط به جدول مشترک

برای این که بتونیم از یک جدول برای ذخیره سازی استفاده کنیم باید در جدول تصاویرمون علاوه بر نام فایلی که نگهداری می کنیم بتونیم model ای که این اسم رو ذخیره کرده داشته باشیم و هم ID پست یا کاربری که این تصویر به آن مربوط هست رو داشته باشیم .

نام گذاری این ستون ها در لاراول با یک اسم مشترک برای هر دو ستون  و در ادامه type و id خواهد بود . یعنی این دو اسم برای ستون های ما  اگر نام آن را imageable انتخاب کنیم به صورت imageable_id و imageable_type خواهد بود.

imageable_id مقدار id مربوط به کاربر و یا پست های ما را نگهداری می کنم و imageable_type نام مدلی که از طریق آن این ستون ذخیره شده است. یه جورایی داریم علامت می گذاریم که این پست رو چه بخشی ذخیره کرد.

model ها در ارتباط Polymorphic

به model های دقت کنید.

در کلاس User و Post دقت کنید که ما در بخش تعریف ارتباط گفتیم که ما یک ارتباط از جنس morph داریم با کلاس image و اسمی که برای اون دو ستون انتخاب کردیم در جدول image با imageable شروع می شود.

خوب حالا ما جداول و مدل هامون رو داریم و می تونیم از طریق این ارتباط به تصاویر مربوط به User , Post دسترسی داشته باشیم

یا از طریق تصاویر می تونیم به اطلاعات مربوط به پست یا کاربر دسترسی بگیریم

 

, , , , , , ,
اشتراک گذاری:

مایل به ثبت دیدگاه هستید؟

آخرین دیدگاه‌ها

آخرین دیدگاه‌ها