मैं सिद्धांत 2 ओआरएम के साथ अंतिम सम्मिलित आईडी कैसे प्राप्त कर सकता हूं? मुझे यह सिद्धांत के दस्तावेज़ीकरण में नहीं मिला, क्या यह भी संभव है?सिद्धांत 2 के साथ अंतिम डालने आईडी प्राप्त करें?
उत्तर
मैं पिछले डालने आईडी प्राप्त करने के लिए फ्लश करने के बाद इस का उपयोग करने के लिए किया था:
$em->persist($user);
$em->flush();
$user->getId();
इसका उपयोग कर सकते हैं। त्रुटि प्राप्त करना अपरिभाषित विधि पर कॉल करें \ Myity \ Test :: getId() "मेरी परियोजना" –
@ noobie-php में आपको अपने आईडी के लिए एक सार्वजनिक गेटर परिभाषित करने की आवश्यकता है (यदि यह एक निजी है तो यह होना चाहिए) – cheesemacfly
@cheesemacfly : मैंने इसे पहले से हल किया है कि यह त्रुटि उत्पन्न होती है (मेरे परिदृश्य में) जब हम किसी भी कारण से फ्लश() को असमर्थ करने में असमर्थ होते हैं, तो फ्लश() को सफलतापूर्वक प्राप्त किया जाता है() काम करना शुरू कर देता है, मानते हैं कि गेटर और सेटर्स यहां कोई समस्या नहीं हैं –
कॉलिंग फ्लश() संभावित नई संस्थाओं के बहुत सारे जोड़ सकते हैं, इसलिए वहाँ वास्तव में नहीं है "lastInsertId" की धारणा। हालांकि जब भी कोई उत्पन्न होता है तो सिद्धांत पहचान फ़ील्ड को पॉप्युलेट करेगा, इसलिए फ्लश कॉल करने के बाद आईडी फ़ील्ड तक पहुंचने में हमेशा एक नई "लगातार" इकाई की आईडी होगी।
आप इकाई प्रबंधक की निरंतर विधि को कॉल करने के बाद आईडी तक पहुंच सकते हैं।
$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();
आपको इस आईडी प्राप्त करने के लिए फ्लश करने के लिए जरूरत करना ।
सिंटेक्स त्रुटि फिक्स: $ इकाई के बाद अर्ध-कॉलन जोड़ा गया-> फ्लश() कहा जाता है।
मुझे मूल्य वापस पाने के लिए फ़्लश करना पड़ा। दृढ़ता से पर्याप्त नहीं था, क्योंकि जब तक आप फ्लश नहीं करते हैं तब तक आइटम डेटाबेस में वास्तव में लिखे नहीं जाते हैं। –
प्रश्न का उत्तर देने में थोड़ा देर हो चुकी है। लेकिन,
यदि यह एक MySQL डेटाबेस
$doctrine_record_object->id
काम करता है, तो AUTO_INCREMENT
डेटाबेस में और अपनी मेज परिभाषा परिभाषित किया गया है चाहिए।
आप दिखाया गया है here संस्थाओं लेकिन मूल निवासी एसक्यूएल का उपयोग नहीं कर रहे हैं तो आप पिछले डाला आईडी प्राप्त करने के लिए जिन्हें आप नीचे देख सकते हैं:
$entityManager->getConnection()->lastInsertId()
ऐसे PostgreSQL के रूप में दृश्यों के साथ डेटाबेस के लिए कृपया नहीं आप कर सकते हैं कि अनुक्रम नाम को lastInsertId
विधि के पहले पैरामीटर के रूप में प्रदान करें।
$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
अधिक जानकारी के लिए GitHub here और here पर कोड पर एक नज़र डालें।
यह हर डीबीएमएस के साथ काम नहीं कर सकता है। उदाहरण के लिए यह पोस्टग्रेज़ (अनुक्रमों के कारण) के साथ काम नहीं करता है –
बहुत बढ़िया !! मैंने इस छोटे स्निपेट की तलाश में घंटों बिताए। – MikeGA
@ paul.ago आपको केवल अनुक्रम का नाम जानने की आवश्यकता है, उदाहरण के लिए: 'lastInsertId (' articles_id_seq ') ' – ChocoDeveloper
- 1. Django - अंतिम डालने आईडी
- 2. कोडइग्निटर activerecord, अंतिम डालने आईडी पुनर्प्राप्त करें?
- 3. एएसपी एमवीसी savechanges से अंतिम डालने आईडी प्राप्त करें()
- 4. डीबी 2 तालिका से अंतिम सम्मिलित आईडी कैसे प्राप्त करें
- 5. PHP ओडीबीसी कनेक्शन से अंतिम डालने आईडी प्राप्त करें
- 6. अंतिम डालने आईडी का चयन करें
- 7. सिद्धांत 2 - फ्लश से पहले इकाई आईडी प्राप्त करें
- 8. MySQL ऑन डिप्लिकेट कुंजी - अंतिम डालने आईडी?
- 9. CFBuilder 2 डालने अंतिम टैग
- 10. सिद्धांत 2 के साथ सेट सेट करें?
- 11. का उपयोग कर डालने() विधि पीएचपी सिद्धांत \ DBAL साथ दिनांक समय मूल्य डालने के लिए 2
- 12. सिद्धांत 2, पास आईडी या ऑब्जेक्ट?
- 13. सिद्धांत 2 - सभी रिकॉर्ड्स प्राप्त करें
- 14. सिद्धांत 2:
- 15. जावास्क्रिप्ट: आईडी आईडी के साथ सभी तत्व प्राप्त करें [x]
- 16. सिद्धांत 2
- 17. सी # + एसक्यूएल सर्वर ExecuteScalar() अंतिम डालने वाली आईडी
- 18. सिम्फनी 2 प्रमाणीकरण (सिद्धांत) के साथ प्रमाणीकरण
- 19. सिद्धांत 2
- 20. सिद्धांत 2 कनेक्शन बंद करें
- 21. सिद्धांत 2 बैच सम्मिलित करें
- 22. उद्देश्य-सी स्ट्रिंग के अंतिम 2 अक्षर प्राप्त करें?
- 23. सिम्फनी 2 + सिद्धांत 2 + विरासत
- 24. पीएलएसक्यूएल जेडीबीसी: अंतिम पंक्ति आईडी कैसे प्राप्त करें?
- 25. सिद्धांत 2
- 26. कोई पंक्ति डालने के बिना अगली आईडी प्राप्त करना
- 27. बचना सिद्धांत 2
- 28. सिद्धांत और जेडएफ 2
- 29. सिद्धांत 2 प्लेनवेल्यू
- 30. सिम्फनी 2 सिद्धांत मोंगोडीबी रोलबैक
अपनी डालने के अंत में इसे आज़माएं ... आईडी वापस लौटें-> id; – Manie