मैं पिछले कुछ दिनों से डॉक्ट्राइन 2 + जेडएफ सेटअप के साथ खेल रहा हूं।सिद्धांत 2 बड़े संग्रह
उन चीजों में से एक जो मैं अभी भी नहीं समझ सकता, वह बड़ी सरणी संग्रह assosicaitons है। उदाहरण के लिए मान लें कि हमारे पास पोस्ट नामक एक इकाई है और प्रत्येक पोस्ट में कई टिप्पणियां हो सकती हैं।
<?php
/**
* @Entity
*/
class Post
{
/**
* @OneToMany(targetEntity="Comment", mappedBy="post")
*/
protected $comments;
}
?>
अब इस इस विशेष पद के लिए अगर मैं
$post->comments
लेकिन क्या होगा अगर देखते हैं कर सभी टिप्पणियों लोड होगा, 10000 टिप्पणियां कहा? तब सब लोड हो जाएंगे जो अच्छा नहीं है। और जहां तक मुझे पता है कि स्लाइस/पेजिनेशन सिद्धांत 2.1 तक उपलब्ध नहीं होगा।
क्या कोई मुझे सलाह दे सकता है कि मैं टिप्पणियों को कैसे सीमित कर सकता हूं? शायद डीक्यूएल के साथ? यदि डीक्यूएल, आप इसे कहां कार्यान्वित करते हैं? क्या मैं पोस्ट इकाई में getComments विधि बनाता हूं और वहां डीक्यूएल करता हूं?
धन्यवाद विधेयक
पेजिनेट एक्सटेंशन के बगल में लार्जकोलेक्शन नामक एक एक्सटेंशन भी है। – Orhan
तब आप पेजिनेशन कोड का उपयोग कब करेंगे। $ Post-> getComments() में? क्या हम इकाई में डीक्यूएल का उपयोग कर सकते हैं? या शायद एक सेवा में? क्या आप एक कोड उदाहरण दे सकते हैं? @orhan एक ही मुद्दा, आप बड़े चयन एक्सटेंशन का उपयोग कहां करेंगे? – Optimus
लार्जकोलेक्शन ने मेरे लिए चाल बनाई! मैंने अपनी 'पोस्ट' इकाई में निम्न विधि जोड़ा।'सार्वजनिक फ़ंक्शन getCommentsPagination ($ सीमा = 10, $ ऑफ़सेट = 0) { $ lc = new \ DoctrineExtensions \ LargeCollections \ LargeCollection(); $ परिणाम = $ एलसी-> getSliceQuery ($ this-> getComments(), $ सीमा, $ ऑफसेट) -> getResult(); $ परिणाम वापसी; } ' – Optimus