"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > **एलोक्वेंट के साथ सिंगल टेबल इनहेरिटेंस बनाम मल्टी टेबल इनहेरिटेंस: आपके लारवेल एप्लिकेशन के लिए कौन सा सही है?**

**एलोक्वेंट के साथ सिंगल टेबल इनहेरिटेंस बनाम मल्टी टेबल इनहेरिटेंस: आपके लारवेल एप्लिकेशन के लिए कौन सा सही है?**

2024-11-15 को प्रकाशित
ब्राउज़ करें:273

**Single Table Inheritance vs. Multi Table Inheritance with Eloquent: Which is Right for Your Laravel Application?**

लारवेल के एलोक्वेंट के साथ सिंगल टेबल इनहेरिटेंस को लागू करना

डेटाबेस मॉडल के साथ काम करते समय, इनहेरिटेंस संबंधित संस्थाओं के पदानुक्रम को परिभाषित करने का एक तरीका प्रदान करता है। हालाँकि, जब सिंगल और मल्टी टेबल इनहेरिटेंस के बीच चयन किया जाता है, तो बाद वाला अक्सर अधिक कुशल और लचीला समाधान बनकर उभरता है।

सिंगल टेबल इनहेरिटेंस

वैचारिक रूप से सरल होते हुए भी, सिंगल टेबल इनहेरिटेंस के लिए सभी प्रकार के सभी कॉलमों को एक ही तालिका में संग्रहीत करने की आवश्यकता होती है, जिससे संभावित NULL मान प्रसार होता है। यह डेटाबेस प्रदर्शन को प्रभावित कर सकता है, विशेष रूप से बड़े डेटासेट के साथ। विशिष्ट मॉडल प्रकार. लारवेल का एलोक्वेंट फ्रेमवर्क इन संबंधों को निर्बाध रूप से प्रबंधित करने के लिए बहुरूपी संबंध प्रदान करता है। बहुरूपी संबंध:

वर्ग पोस्ट सुवक्ता का विस्तार करता है { सार्वजनिक समारोह पोस्ट करने योग्य() { $this->morfTo() लौटाएँ; } }

प्रश्न/लेख मॉडल

प्रत्येक विशिष्ट पोस्ट प्रकार, जैसे प्रश्न या लेख, पोस्ट से विस्तारित होता है और बेस मॉडल के साथ एक मॉर्फवन संबंध को परिभाषित करता है:

वर्ग प्रश्न पोस्ट का विस्तार करता है { सार्वजनिक समारोह पोस्ट() { वापसी $यह->मॉर्फवन('पोस्ट', 'पोस्टेबल'); } }

class Post extends Eloquent {
    public function postable() {
        return $this->morphTo();
    }
}

सभी पोस्ट पुनर्प्राप्त करें:

$posts = Post::all();

class Question extends Post {
    public function post() {
        return $this->morphOne('Post', 'postable');
    }
}
$questions = प्रश्न::सभी();

किसी पोस्ट से प्रश्न-विशिष्ट कॉलम पुनर्प्राप्त करें:

$question_column = $post->postable->question_column;
  • चेक करें पोस्ट प्रकार: इको 'प्रकार: '.get_class($post->postable);
  • एक नया प्रश्न बनाना
  • एक नया प्रश्न बनाने के लिए मल्टी को बनाए रखने के लिए इसे पोस्ट तालिका से लिंक करना आवश्यक है -टेबल इनहेरिटेंस:
  • $पोस्ट = नया पोस्ट(); $पोस्ट->shared_column = 'नया प्रश्न पोस्ट'; $पोस्ट->सहेजें(); $प्रश्न = नया प्रश्न(); $प्रश्न->प्रश्न_कॉलम = 'मेरा प्रश्न'; $प्रश्न->सहेजें(); $question->post()->save($post);हालांकि मल्टी-टेबल इनहेरिटेंस में अधिक जटिलता शामिल है, यह एक क्लीनर डेटाबेस संरचना प्रदान करता है, प्रदर्शन में सुधार करता है, और जटिल रिश्तों के मॉडलिंग के लिए अधिक लचीलापन सक्षम करता है।
लारवेल में मल्टी-टेबल इनहेरिटेंस पर व्यापक ट्यूटोरियल के लिए, मूल प्रश्न उत्तर में दिए गए संसाधनों को देखें।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3