आपके पिछले कोड उदाहरण में, $user
. का प्रकार क्या है? चर? मुझे लगता है कि यह एक स्ट्रिंग हो सकता है यदि यह रूटिंग पैरामीटर है और यूआरआई से आ रहा है। आप उपयोग कर सकते हैं var_dump()
एक शॉट में प्रकार और मूल्य प्राप्त करने के लिए।
पिछली टिप्पणी के आधार पर, आपने कहा था कि स्क्रिप्ट दस्तावेज़ में निम्नलिखित फ़ील्ड थे:
- _id
- नाम (स्ट्रिंग)
- विवरण (स्ट्रिंग)
- सूचकांक (पूर्णांक)
- user_id (पूर्णांक)
अगर index
आपके MongoDB दस्तावेज़ में फ़ील्ड एक पूर्णांक है, आपको क्वेरी में एक पूर्णांक का उपयोग करने की आवश्यकता होगी। उदाहरण के लिए, findOneByIndex('1')
पूर्णांक वाले दस्तावेज़ से मेल नहीं खाएगा 1
इसके क्षेत्र में। यहां सबसे अच्छा अभ्यास है कास्ट करना
क्वेरी करने से पहले आपके मान उपयुक्त प्रकार के लिए। जादू DocumentRepository विधियों पर भरोसा करना बंद करना और अपने स्वयं के findBy
को स्पष्ट रूप से परिभाषित करना भी सबसे अच्छा हो सकता है तरीके, जो आंतरिक रूप से कास्टिंग करते हैं। फिर, आपका नियंत्रक एक रूटिंग या अनुरोध पैरामीटर से सीधे एक संख्यात्मक स्ट्रिंग पास कर सकता है और पूर्णांक कास्ट करने के बारे में चिंता करने की आवश्यकता नहीं है।
साथ ही, अपने मूल कोड उदाहरण पर टिप्पणी करने के लिए:
$script = $repository->findOneByIndex($user);
यह रूटिंग पैटर्न platform/designing/users/{user}/showuser
. के लिए था . आपने कहा कि यह परिणाम खोजने में विफल रहा। मुझे लगता है कि $user
आपके नियंत्रक के लिए तर्क एक उपयोगकर्ता आईडी है। अगर ऐसा है, तो आप index
. पर क्वेरी क्यों कर रहे थे? user_id
. के बजाय फ़ील्ड ?