मेरी परियोजना में मैं सिद्धांत सिद्धांत 2.5.4/पोस्टग्रेज 9.5 का उपयोग कर रहा हूं। मैं yaml का उपयोग करके एक jsonb फ़ील्ड जोड़ने का प्रयास कर रहा हूँ:
fields:
obj: json_array
यह जेसन में परिवर्तित हो जाता है (और जेसनबी नहीं)। जेसन या जेसनबी चुनने के बारे में विनिर्देश नोट:
चुना गया है कि कॉलम परिभाषा में प्लेटफॉर्मऑप्शन विशेषता सरणी के अंदर जेसनबी विकल्प है और इसे सत्य पर सेट किया गया है।
लेकिन प्लेटफॉर्मऑप्शन काम नहीं कर रहा है (इसे ओबीजे के नीचे जोड़ने की कोशिश की, शीर्ष पर ... बिना किसी सफलता के)। मैं एक jsonb फ़ील्ड कैसे जोड़ सकता हूँ?
धन्यवाद, दान
2 जवाब
यह सिद्धांत/dbal v2.6+ द्वारा समर्थित है (इसके लिए PHP 7.1 की आवश्यकता है)। आपको केवल json_array
का उपयोग करना है और options={"jsonb"=true}
सेट करना है, मैंने इसका परीक्षण सिद्धांत/dbal v2.6.3 पर किया है।
यह PHP प्रारूप में ऐसा दिखता है
/**
* @ORM\Column(type="json_array",nullable=true,options={"jsonb"=true})
*/
private $details;
और यह क्वेरी बनाता है जैसे (मौजूदा तालिका के लिए):
ALTER TABLE mytable ADD details JSONB NOT NULL;
टाइप मैपिंग के बारे में अधिक जानकारी डॉक्ट्रिन मैपिंग मैट्रिक्स।
options
मानों के बारे में और दस्तावेज़ दे सकते हैं? मुझे आधिकारिक दस्तावेज़ में "jsonb"=true
के बारे में कुछ भी नहीं मिला।
type="json", options={"jsonb": true}
का उपयोग करें
PostgreSQL100Platform extends PostgreSQL94Platform
if (!empty($column['jsonb'])) { return 'JSONB';} return 'JSON';
boldtrn/jsonb-bundle का उपयोग करें, यह एक jsonb
सिद्धांत प्रकार के साथ-साथ कस्टम फ़ंक्शन प्रदान करता है PostgreSQL jsonb
डेटा प्रकार द्वारा प्रदान किए गए विशेष ऑपरेटरों तक पहुंचने के लिए।
संबंधित सवाल
नए सवाल
doctrine-orm
सिद्धांत ORM एक PHP ORM है। जबकि Doctrine 1.2 सक्रिय रिकॉर्ड पैटर्न का उपयोग करता है, Doctrine ORM 2 और ऊपर डेटा मैपर पैटर्न का उपयोग करता है। डॉक्ट्रिन परियोजना ओपन सोर्स लाइब्रेरी और PHP में लिखे गए डेटाबेस एब्स्ट्रैक्शन और ऑब्जेक्ट-रिलेशनल मैपिंग से निपटने के लिए टूल्स का एक संग्रह है।