मैं अपने डॉक्टर 2 इकाइयों में कुछ अतिरिक्त फ़ंक्शंस शामिल करना चाहता हूं जिसमें कोड शामिल है जिसे मुझे अक्सर चलाना होगा। उदाहरण के लिए:क्या मैं एक सिद्धांत 2 इकाई विधि में एक सुविधा क्वेरी शामिल कर सकता हूं?
उपयोगकर्ता - कई पोस्ट
पोस्ट है - एक एकल उपयोगकर्ता
मैं पहले से ही एक समारोह $user->getPosts()
है है, लेकिन यह मेरी सभी पोस्ट देता है।
$user->getPosts()->where('active = true') //if this were possible
या:: मैं एक $user->getActivePosts()
है, जो जैसा होगा लिखने के लिए देख रहा हूँ
$em->getRepository('Posts')->findBy(array('user'=>$user,'active'=>true)) //if this were more convenient
जहां तक मेरा बता सकते हैं, वहाँ इकाई प्रबंधक हालांकि एंटिटी को वापस पाने के लिए कोई रास्ता नहीं है ही है, तो मेरे ही विकल्प होगा
class User {
function getActivePosts() {
$all_posts = $this->getPosts();
$active_posts = new ArrayCollection();
foreach ($all_posts as $post) {
if ($post->getActive()) {
$active_posts->add($post);
}
}
return $active_posts;
}
बहरहाल, यह मुझे मेरे इकाई प्रबंधक में सभी पोस्ट लोड करने की आवश्यकता है, जब मैं वास्तव में उनमें से केवल एक छोटे सबसेट चाहते हैं, और यह मुझे आवश्यकता है PHP में छानने करना है, जब यह एम होगा एसक्यूएल परत में ऐसा करने के लिए बहुत अधिक उपयुक्त है। क्या मैं इकाई के अंदर जो करना चाहता हूं उसे पूरा करने का कोई तरीका है, या क्या मुझे इसके बाहर कोड बनाना है?
सही तरह। जब भी आप एक इकाई के अंदर एक इकाई प्रबंधक डालने के इच्छुक होते हैं, तो आप जानते हैं कि यह एक कदम वापस लेने का समय है और आप जो कुछ भी कर रहे हैं, उसके बारे में सोचें या किसी प्रकार के भंडार के बारे में सोचें। ओपी के मामले में, अगर वह सिर्फ पोस्ट संग्रह को फ़िल्टर करना चाहता है, तो वह एंटीटी में इसे $ - से अधिक लूपिंग करके और एक सरणी को पॉप्युलेट करके कर सकता है - अच्छा और साफ, लेकिन बहुत प्रभावी नहीं है क्योंकि इसे लोडिंग/हाइड्रेटिंग की आवश्यकता होती है सभी उपयोगकर्ता की पोस्ट। – timdev
क्या पोस्ट पोस्टपॉजिटरी :: findActiveByUser() को अपने स्वयं के findActivePosts() विधि में कॉल करने के लिए पोस्ट एंटिटी के लिए यह बुरा अभ्यास माना जाता है? –