تكرار السؤال: …
الإجابة المختصرة
تسمح لنموذج واحد (مثل Comment) بالارتباط بعدة نماذج مختلفة عبر حقلي commentable_id و commentable_type؛ وتخزين أسماء الفئات بالكامل يسبب هشاشة يُفضل حلها بـ morphMap.
الشرح
في العلاقات متعددة الأشكال، يمكن التعليق على مقال (Post) أو فيديو (Video). يخزن الجدول نوع الكائن ومعرفه. إذا تم تخزين اسم الفئة كاملاً مثل App\Models\Post، فإن أي إعادة هيكلة لاسم الفئة أو مجلدها ستعطل العلاقات السابقة. الحل الاحترافي هو تسجيل خريطة تحويل ثابتة Relation::morphMap(['post' => Post::class]) في AppServiceProvider.
مثال بالكود
Relation::morphMap([
'post' => \App\Models\Post::class,
'video' => \App\Models\Video::class,
]);أخطاء شائعة
- ترك Eloquent يخزن المسار الكامل للـ namespace في قاعدة البيانات دون استخدام morphMap.