2012-10-15 9 views
5

में खोजें या बनाएं (अपरर्ट) कार्यक्षमता क्या Doctrine 2 में अपरिवर्तनीय कार्यक्षमता है? ऐसा प्रतीत नहीं होता है, लेकिन मुझे एक निश्चित हां-या-कोई जवाब नहीं मिला।Doctrine 2

यदि ऐसा होता है, तो मैं निश्चित रूप से एक उदाहरण और/या कुछ दस्तावेज देखना चाहता हूं।

उत्तर

3

मेरा मानना ​​है कि मुझे जवाब मिला। आज के रूप में (10/15/2012), सिद्धांत के लिए एक खुला "add upsert support" मुद्दा है। मुझे लगता है कि यह टिकट तब भी खुला नहीं होगा जब डॉक्टर 2 ने अपरिवर्तनीय समर्थन किया हो, तो मुझे लगता है कि मेरा निश्चित जवाब है।

+0

मैं देख सकता हूं कि कोई टिकट है, लेकिन कोई दस्तावेज नहीं मिला? क्या तुमने किया? –

+0

@DimitryK मेरा जवाब देखें, यह पहले ही लागू हो चुका है :) –

4

उपदेश सिद्धांत में पहले से मौजूद है।

क्वेरी बिल्डर का उपयोग करना, आप findAndUpdate सेट करने के लिए() और returnNew() यदि आप दस्तावेज़ वापस जाने के लिए चाहते हैं। अपर्ट() सेट करें और आप जाने के लिए तैयार हैं।

उदाहरण के लिए:

$documentMannager->createQueryBuilder('App\Domain') 
->findAndUpdate() 
->returnNew() 
->field('_id')->equals($id) 
->field('page')->equals($page) 
->field('count')->inc(1) 
->upsert() 
->getQuery() 
->execute(); 

इस तरह मैं एक बाल्टी पैटर्न लागू है।

+0

धन्यवाद @ गुइलहेम मैं इस दृष्टिकोण का परीक्षण करूंगा और आपके परिणामों के साथ वापस आऊंगा! –

+3

केवल ओडीएम पर लागू होता है न कि ओआरएम। – Im0rtality

+0

@ Im0rtality कहते हैं, यह केवल मोंगो के संदर्भ में उपयोग किया जा सकता है, न कि एसक्यूएल डेटाबेस के। – fjcero