आप इकाई फ़ाइल पर #[ORM\Index(fields: ['fieldName'] विशेषता का उपयोग करके डेटाबेस इंडेक्स बना सकते हैं और डॉक्ट्रिन आपके लिए इंडेक्स को प्रबंधित करने के लिए बाकी काम करेगा, लेकिन मैं उस बारे में बात नहीं करूंगा.
जैसे-जैसे आपका प्रोजेक्ट बढ़ता है या विशिष्ट आवश्यकताओं की आवश्यकता होती है, आपको GIST, GIN, BRIN, आदि (https://www.postgresql.org/docs/current/indexes-types.html) जैसे कस्टम इंडेक्स प्रकारों का उपयोग करने की आवश्यकता हो सकती है। सिद्धांत डेटाबेस-विक्रेता-विशिष्ट सूचकांक प्रकार को आउट-ऑफ-द-बॉक्स (रेफ) बनाने का समर्थन नहीं करता है।
इस समस्या से निपटने के लिए आप या तो क्रिएट इंडेक्स डीडीएल को सीधे डेटाबेस में निष्पादित कर सकते हैं या सिद्धांत-माइग्रेशन फ़ाइल पर डीडीएल लिख सकते हैं। बाद वाला विकल्प आपको परिवर्तनों को तैनात करने या रोलबैक करने में आसानी का लाभ देता है।
इससे कोई फर्क नहीं पड़ता कि आप कस्टम इंडेक्स बनाने के लिए किस विधि का उपयोग करते हैं, सिद्धांत हमेशा उन कस्टम इंडेक्स को अनमैप्ड इंडेक्स के रूप में चिह्नित करेगा, इसलिए यदि आप सिद्धांत निष्पादित करते हैं: स्कीमा: मान्य करें तो आपको एक त्रुटि मिलेगी जो बताती है कि यदि आपका डेटाबेस सिंक में नहीं है, तो डॉक्ट्रिन:स्कीमा:अपडेट --डंप-एसक्यूएल या डॉक्ट्रिन:माइग्रेशन:डिफ को निष्पादित करते समय भी यह आपको कस्टम इंडेक्स को हटाने के लिए DROP INDEX... स्टेटमेंट दिखाएगा।
मैं इन पैकेज संस्करणों का उपयोग कर रहा हूं। (मेरा मानना है कि समाधान पैकेजों के समान प्रमुख संस्करण पर काम करेगा):
मुझे इसे संभालने के लिए कई ट्यूटोरियल मिले लेकिन यह संतोषजनक नहीं है:
मुझे यहां https://github.com/doctline/DoctrineBundle/issues/1656 पर प्लेटफ़ॉर्म_सर्विस कॉन्फ़िगरेशन प्रतिस्थापन के बारे में एक GitHub समस्या मिली।
इन 2 पेजों को पढ़ने से मुझे डॉक्ट्रिन मिडलवेयर के माध्यम से कस्टम डीबीएएल प्लेटफॉर्म का उपयोग करने के बारे में सारी जानकारी मिली:
आखिरकार, स्रोत कोड में खोजबीन करने के बाद, मुझे समाधान मिल गया। आपको 4 फाइलें बनाने की जरूरत है, 2 फाइलें डॉक्ट्रिन मिडलवेयर के बारे में हैं और 2 अन्य फाइलें डॉक्ट्रिन डीबीएएल प्लेटफॉर्म और स्कीमा के बारे में हैं।
नेमस्पेस और क्लास नाम को अपनी आवश्यकताओं के अनुसार संशोधित करें।
true, 'index_name_2' => true, ]; #[\Override] protected function _getPortableTableIndexesList(array $tableIndexes, string $tableName): array { $indexes = parent::_getPortableTableIndexesList($tableIndexes, $tableName); foreach (array_keys($indexes) as $indexName) { if (isset(self::IGNORED_INDEXES[$indexName])) { unset($indexes[$indexName]); } } return $indexes; } }
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3