Doctrine2 में आप प्रॉक्सी ऑब्जेक्ट पर डिलीट को कॉल कर सकते हैं, जो डेटाबेस से लोड नहीं होता है। बस एक "डमी" वस्तु, की तरह कुछ बनाने के लिए:
$user = $em->getPartialReference('model\User', array('id' => $id));
$em->remove($user);
यह प्रारंभिक क्वेरी की आवश्यकता नहीं है, लेकिन मैं काफी यकीन है कि अगर सिद्धांत अभी भी यह आंतरिक रूप से करता है fush पर नहीं कर रहा हूँ। मैं इसे एसक्लॉग में नहीं देखता हूं।
बस जोड़ने के लिए, मुझे लगता है कि यह किसी भी सभ्य ओआरएम के व्यवहार की उम्मीद है। यह वस्तुओं और संबंधों से संबंधित है। यह जानना है कि इसे हटाने से पहले कुछ मौजूद है। ओआरएम सिर्फ क्वेरी जनरेटर नहीं है। आम तौर पर, किसी भी ओआरएम में एक देशी क्वेरी हमेशा तेज होगी। कोई भी ओआरएम अमूर्तता की एक परत जोड़ता है और इसे निष्पादित करने में कुछ समय लगता है। यह एक ठेठ व्यापार है, आपको कुछ फैंसी फीचर्स और क्लीन कोड मिलते हैं, लेकिन प्रदर्शन पर कुछ खो देते हैं।
संपादित करें:
मुझे खुशी है कि यह आप के लिए बाहर काम कर रहा हूँ। दरअसल मैं एक और समस्या पर ठोकर खाई, जिसने मुझे एहसास दिलाया कि प्रॉक्सी और आंशिक वस्तुएं वास्तव में एक ही चीज़ नहीं हैं। आंशिक वस्तुएं वास्तविक मॉडल वर्ग का उदाहरण देती हैं, और इसे अपने इच्छित मानों से भरती हैं। आंशिक वस्तु शुरू करने के बाद आलसी लोडिंग अब इस पर काम नहीं करती है। तो उदाहरण के लिए, यदि आप केवल आईडी के साथ आंशिक वस्तु बनाते हैं, और केवल तभी हटाना चाहते हैं यदि कोई अन्य ऑब्जेक्ट फ़ील्ड कुछ शर्त को पूरा करता है, तो यह काम नहीं करेगा, क्योंकि वह अन्य फ़ील्ड हमेशा शून्य होगा।
दूसरी तरफ, प्रॉक्सी आलसी लोडिंग के साथ काम करते हैं, और आंशिक वस्तुओं की समस्याओं को साझा नहीं करते हैं। तो मैं दृढ़ता से getPartialReference
विधि का प्रयोग करेंगे सुझाव देते नहीं करने के बजाय आप की तरह कुछ कर सकते हैं:
$user = $em->getReference('model\User', $id);
$em->remove($user);
getReference
विधि वस्तु है, तो यह पहले से ही भरी हुई है या किसी प्रॉक्सी लौटाता है यदि ऐसा नहीं है। एक प्रॉक्सी सभी अन्य मूल्यों को आलसी लोड कर सकता है यदि आपको उनकी आवश्यकता हो। आपके उदाहरण के लिए, वे बिल्कुल वही व्यवहार करेंगे, लेकिन प्रॉक्सी निश्चित रूप से जाने का एक बेहतर तरीका है।
जानकारी और स्पष्टीकरण के लिए धन्यवाद – Rana