2012-12-12 4 views
8

में आंशिक क्वेरी और समग्र कुंजी का उपयोग करते समय" कोई मैप किए गए फ़ील्ड "में मेरे पास दो मॉडल हैं जिन्हें Person और Tag कहा जाता है। एक व्यक्ति के पास कई टैग होते हैं, और टैग प्राथमिक कुंजी person_id और tag (Person $person और $tag में डॉक्टरेट 2 में एक समग्र कुंजी है)।"मैपडिन 2

Tag मॉडल में बहुत से डेटा के साथ एक डेटा फ़ील्ड (BLOB) है। मैं एक क्वेरी स्थापित कर रहा हूं जिसके लिए उस फ़ील्ड के डेटा की आवश्यकता नहीं है, इसलिए मैं एक क्वेरी सेट अप करना चाहता हूं जो उस फ़ील्ड को पुनर्प्राप्त नहीं करता है।

मैं निम्न क्वेरी के साथ करने की कोशिश की:

SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags 

यहाँ, मैं कुछ हद तक उम्मीद त्रुटि वर्ग टैग का आंशिक क्षेत्र चयन पहचानकर्ता शामिल होना चाहिए मिलता है। कोई बात नहीं, मैं संपर्क क्षेत्र जोड़ें:

SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags 

लेकिन अब, मैं मिल कक्षा टैग पर 'सम्पर्क' नाम का कोई मैप किया हुआ क्षेत्र है।

क्या Doctrine2 समग्र कुंजी पर आंशिक प्रश्नों का समर्थन नहीं करता है?

यहाँ टैग वर्ग है:

/** @Entity @Table(name="tag") **/ 
class Tag 
{ 
    /** @Id @ManyToOne(targetEntity="Contact",inversedBy="tags") @var Contact **/ 
    protected $contact; 
    /** @Id @Column(type="string",length=10,nullable=false) @var string **/ 
    protected $tag; 
    /** @Column(type="blob") **/ 
    protected $data; 
} 
+0

आप इस बारे में कोई और अधिक जानकारी प्राप्त की थी प्रकट नहीं होता है त्रुटि @Nils? – jah

+1

@jah, दुर्भाग्य से नहीं। मुझे टैग मॉडल को दो वस्तुओं में विभाजित करना था ताकि विशाल डेटा हिस्से को रास्ते से बाहर निकाला जा सके। इस तरह, जब भी मुझे डेटा की आवश्यकता होती है तो मैं टैगडाटा ऑब्जेक्ट्स का चयन कर सकता हूं। एक बहुत ही सुरुचिपूर्ण समाधान, लेकिन समझने और दस्तावेज में आसान है। – Nils

उत्तर

7

जब भी एक आंशिक चयन आप वर्ग आप से चयन किए जाने वाले की प्राथमिक कुंजी शामिल करने की ज़रूरत प्रदर्शन।

आपने वास्तव में अपनी "संपर्क" इकाई का विस्तार नहीं किया है, लेकिन मुझे लगता है कि उस वर्ग का प्राथमिक कुंजी फ़ील्ड "आईडी" है। इस मामले था तो निम्न क्वेरी प्राप्त होगा कि तुम क्या करने के बाद कर रहे हैं:

SELECT c, PARTIAL t.{id, tag} FROM Contact c LEFT JOIN c.tags 

यह प्रलेखित किया जाना :(

http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#partial-object-syntax

संबंधित मुद्दे