تنفيذ الوراثة في جدول واحد باستخدام Eloquent من Laravel
عند العمل مع نماذج قاعدة البيانات، يوفر الوراثة طريقة لتحديد التسلسلات الهرمية للكيانات ذات الصلة. ومع ذلك، عند الاختيار بين وراثة الجدول الفردي والمتعدد، غالبًا ما يظهر الأخير كحل أكثر كفاءة ومرونة.
وراثة الجدول الواحد
بينما يكون الجدول الفردي أبسط من الناحية النظرية، يتطلب الوراثة تخزين كافة الأعمدة لجميع الأنواع في جدول واحد، مما يؤدي إلى انتشار القيمة الخالية المحتملة. يمكن أن يؤثر ذلك على أداء قاعدة البيانات، خاصة مع مجموعات البيانات الكبيرة.
وراثة الجداول المتعددة مع Eloquent
يتضمن وراثة الجداول المتعددة تقسيم الجدول الفردي إلى عدة جداول، كل منها يتوافق مع نوع نموذج محدد. يوفر إطار عمل Laravel's Eloquent علاقات متعددة الأشكال لإدارة هذه العلاقات بسلاسة.
نموذج النشر
تمثل الفئة الأساسية لجميع أنواع المنشورات، Post، الأعمدة المشتركة وتحدد قابلة للنشر علاقة متعددة الأشكال:
class Post extends Eloquent {
public function postable() {
return $this->morphTo();
}
}
نماذج الأسئلة/المقالات
كل نوع منشور محدد، مثل السؤال أو المقالة، يمتد من المنشور ويحدد علاقة morphOne مع النموذج الأساسي:
class Question extends Post {
public function post() {
return $this->morphOne('Post', 'postable');
}
}
أمثلة الاستخدام
إنشاء سؤال جديد يتطلب ربطه إلى جدول النشر للحفاظ على وراثة الجداول المتعددة:
$post = new Post(); $post->shared_column = 'مشاركة سؤال جديدة'; $post->save(); $question = سؤال جديد(); $question->question_column = 'سؤالي'; $سؤال->حفظ(); $question->post()->save($post);$post = new Post();
$post->shared_column = 'New Question Post';
$post->save();
$question = new Question();
$question->question_column = 'My Question';
$question->save();
$question->post()->save($post);
للحصول على دروس شاملة حول وراثة الجداول المتعددة في Laravel، راجع الموارد المتوفرة في إجابة السؤال الأصلي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3