Monday 15 March 2010

symfony - doctrine extra lazy load doesn't work as expected with count -


मेरे पास एक इकाई दुकान और संबंधित इकाई ShopProduct है निम्नलिखित संबंध:

  / ** * @ORM \ OneToMany (targetEntity = "ShopProduct", मैप किया गया = "shopid", fetch = "EXTRA_LAZY" ) * / निजी $ उत्पादों;   

एक टहनी टेम्पलेट में मैं उत्पादों के count तक पहुँचना चाहता हूं, इसलिए मैं

  {{Entity.getProducts ()। Count}}   

लेकिन जब प्रश्नों की संख्या और सामग्री को देखने के लिए symfony2 प्रोफाइलर का उपयोग करते हुए, मुझे लगता है कि इसके बजाय एक पूर्ण चयन जारी किया गया है COUNT मैं उम्मीद करता हूं (आधार पर)।

प्रत्येक दुकान के परिणामों के लिए पूर्ण चयन जारी करना 250 एमबी + और एक मेमोरी उपयोग में होता है 30+ सेकंड का पेज लोड टाइम, जो अवांछित है।

fetch = "EXTRA_LAZY" को जोड़ने के बाद मैंने सिद्धांत कैश को साफ़ कर दिया है।

Am मैं गलत दृष्टिकोण या डॉक्स की गलतफहमी का उपयोग कर कुछ अनदेखी कर रहा हूं?

[संपादित करें]

  सिद्धांत / एनोटेशन v1.1 सिद्धांत / कैश v1.0 सिद्धांत / संकलन v1 1 सिद्धांत / सामान्य 2.4.0-आरसी 1 सिद्धांत / डेटा-फिक्स्चर देव-मास्टर eef10f6 सिद्धांत / डब्बल 2.3.3 सिद्धांत / सिद्धांत-बंडल v1.2.0-बीटा 1 सिद्धांत / सिद्धांत-जुड़नार-बंडल देव-मास्टर 275540d सिद्धांत / सिद्धांत -मग्रेशन-बंडल देव-मास्टर 99c0192 सिद्धांत / इन्फ्लक्टर v1.0 सिद्धांत / लेक्जर v1.0 सिद्धांत / माइग्रेशन देव-मास्टर ई 1 एफ 6 एफआर सिद्धांत / ORM 2.3.3    

बस एक ही समस्या का सामना करना पड़ा और समाधान बहुत सरल था:

{{value.getAlerts.count ()}} < / Code>

के बजाय

{{value.getAlerts.count}}

ट्वीग सिद्धांत को ओवरराइड करना होगा गिनती () विधि जिसका अर्थ है "अतिरिक्त आलसी लोड" इसका स्वयं के कार्यान्वयन के एक प्रकार के साथ है जो कि सभी इकाइयों को घिनौने रूप से उन पर भरोसा करता है।

यह सभी अपेक्षित SELECT * क्वेरी को COUNT ( *) ...

No comments:

Post a Comment