मैं सिम्फनी 5+ बंडल पर काम कर रहा हूं जिसे मैं विभिन्न परियोजनाओं में उपयोग करना चाहता हूं। बंडल में कई अलग-अलग निकाय शामिल हैं जिनका परियोजनाओं में उपयोग किया जा सकता है। कुछ प्रोजेक्ट उन सभी संस्थाओं का उपयोग करेंगे, अन्य केवल कुछ और कुछ इन संस्थाओं में से किसी का भी उपयोग नहीं करेंगे बल्कि बंडल द्वारा प्रदान की जाने वाली अन्य कार्यक्षमता का उपयोग करेंगे।

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

जबकि खाली टेबल कोई वास्तविक नुकसान नहीं करते हैं, मुझे लगता है कि यह वास्तव में एक साफ दृष्टिकोण नहीं है। क्या इन संस्थाओं को वैकल्पिक बनाना संभव है ताकि परियोजना को यह तय करने दिया जा सके कि किसका उपयोग करना है और किन तालिकाओं का निर्माण करना है?

निश्चित रूप से यह सुनिश्चित करने की जिम्मेदारी बंडलों की होगी, कि निष्क्रिय संस्थाओं का उपयोग नहीं किया जा सकता है, लेकिन यह कोई समस्या नहीं है।

जाहिर है मैं बंडल को कई अलग-अलग बंडलों में तोड़ सकता हूं जिसमें सभी में केवल कुछ/एक इकाई होती है, लेकिन इससे बहुत अधिक ओवरहेड बन जाएगा और साफ भी नहीं होगा।

1
FLichter 25 नवम्बर 2021, 10:37

1 उत्तर

सबसे बढ़िया उत्तर

आप अपना खुद का मेटाडेटा ड्राइवर.

सब कुछ फिर से न लिखने के लिए, आप Doctrine\ORM\Mapping\Driver\AnnotationDriver वर्ग का विस्तार कर सकते हैं और केवल parent::loadMetadataForClass($className, $metadata); को कॉल कर सकते हैं यदि className आपके बंडल कॉन्फ़िगरेशन के आधार पर आपकी इकाई अनुमति-सूची में है।

आपको अपने मेटाडेटा ड्राइवर को सिम्फनी पर पंजीकृत करना होगा:

doctrine:
  orm:
    mappings:
      your-bundle:
        is_bundle: true
        type: Path\To\Your\Driver
        prefix: 'Namespace\of\your\bundle\Entity\'
3
Alain Tiemblo 25 नवम्बर 2021, 10:51