Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هي حالات الاستخدام الشائعة للمورفتووماني في لارافيل


ما هي حالات الاستخدام الشائعة للمورفتووماني في لارافيل


تُستخدم علاقة "morphtomany" في لارافيل لتحديد علاقات متعددة الأشكال ، حيث يمكن أن تشارك نماذج متعددة العلاقة مع نوع نموذج واحد من خلال جدول متوسط ​​متعدد الأشكال. يتيح ذلك ارتباطًا مرنًا للعديد من النماذج المختلفة لنموذج مشترك دون الحاجة إلى جداول محورية منفصلة لكل زوج من النماذج.

حالات الاستخدام الشائعة لـ "morphtomany" في Laravel

** 1. أنظمة وضع العلامات
واحدة من حالات الاستخدام الأكثر شيوعًا هي تطبيق نظام وضع العلامات حيث يمكن وضع علامة على نماذج مختلفة (مثل المشاركات ومقاطع الفيديو والصفحات) بنفس العلامات. بدلاً من وجود جداول محورية منفصلة لكل علاقة TAG النموذجية ، يسمح "Morphtomany" بتخزين جميع العلامات في جدول "علامات" واحد ومرتبط متعدد الأشكال مع أي نموذج.
على سبيل المثال ، يمكن أن تحتوي كل من طرازي "Post" و "الفيديو" على طريقة "علامات ()" باستخدام "morphtomany" لاسترداد العلامات ، ويمكن أن يستخدم نموذج "tag`" morphedbymany "للحصول على جميع المنشورات أو مقاطع الفيديو الموسومة بها [1] [5] [9].

** 2. تصنيف أنواع المحتوى المختلفة
على غرار العلامات ، يمكن مشاركة الفئات عبر أنواع المحتوى المختلفة. على سبيل المثال ، قد تحتاج كل من المقالات والمنتجات إلى تصنيفها ، وتتيح لهم علاقة متعددة الأشكال إلى مشاركة الفئات بدون جداول زائدة.

** 3. تعيين ملصقات أو سمات لنماذج متعددة
إذا كان لديك ملصقات أو سمات أو ميزات يمكن أن تنطبق على نماذج مختلفة (على سبيل المثال ، المستخدمين ، الطلبات ، المنتجات) ، يتيح لك استخدام `morphtomany` ربط هذه الملصقات بمرونة مع أي نوع طراز.

** 4. أدوار المستخدم أو الأذونات عبر أنواع متعددة للمستخدمين
في التطبيقات التي تحتوي على أنواع متعددة للمستخدمين (على سبيل المثال ، المشرف ، العميل ، البائع) ، يمكن تعيين الأدوار أو الأذونات متعددة الأشكال باستخدام `morphtomany` بحيث تتم إدارة الأدوار في جدول واحد ولكن تتعلق بنماذج المستخدم المختلفة [1].

** 5. ربط التعليقات أو المرفقات بنماذج متعددة بطريقة كثيرة
على الرغم من أن التعليقات غالبًا ما تكون متعددة الأشكال ، فقد يكون هناك سيناريوهات تتعلق بها تعليقات أو مرفقات متعددة بنماذج متعددة بطريقة متعددة. يمكن استخدام "morphtomany" لنمذجة مثل هذه العلاقات.

كيف يعمل "morphtomany"

- يستخدم جدول محور واحد ، على سبيل المثال ، "TagGables" ، مع أعمدة لـ "TAG_ID` و` taggable_id` و `taggable_type`.
- تتيح أعمدة "taggable_id` و` taggable_type` "تحديد النموذج الذي يرتبط به العلامة.
- على النماذج ذات الصلة (على سبيل المثال ، "post` ،" video`) ، يمكنك تحديد طريقة تُرجع `$ this-> morphtomany (tag :: class ، 'taggable')`.
- على نموذج "العلامة" ، يمكنك تحديد العلاقات العكسية باستخدام "morphedbymany" لاسترداد جميع النماذج من نوع معين مرتبط بهذه العلامة [1] [5].

ملخص

يعد Morphtomany "مثاليًا عندما تريد ربط نماذج متعددة بنموذج مشترك بطريقة متعددة الأشكال. يتم استخدامه على نطاق واسع في أنظمة وضع العلامات ، والتصنيف ، وتعيين الأدوار عبر أنواع متعددة للمستخدمين ، وأي سيناريو حيث تشترك العديد من النماذج المختلفة في مجموعة شائعة من النماذج ذات الصلة دون الحاجة إلى جداول محورية منفصلة لكل زوج.

يبسط هذا النهج تصميم قاعدة البيانات وصيانة الكود من خلال مركزية العلاقات المتعددة الأشكال إلى بنية واحدة أنيقة.

الاستشهادات:
[1] https://blog.logbrocket.com/polymorphic-reelationships-laravel/
[2] https://laraveldaily.com/post/polymorphic-relations-laravel-open-source-examples
[3] https://stackoverflow.com/questions/57522923/how-to-use-morphtomany
[4] https://stackoverflow.com/questions/43285779/laravel-polymorphic-relations-has-many-rough
[5] https://laravel.com/docs/11.x/eloquent-relationships
[6] https://www.linkedin.com/pulse/complete-guide-polymorphic-relationships-morphs-sajith-madhubashana-rk1xc
[7] https://joedixon.co.uk/a-practical-use-case-for-laravels-polymorphic-relationships
[8] https://stackoverflow.com/questions/58811999/what-e-the-us-of-morphs-type-in-laravel
[9] https://laraveldaily.com/post/laravel-polymorphic-many-to-many-get-all-relableds