मुझे वाईआई 2 में अजीब समस्या का सामना करना पड़ रहा है। मेरे पास एक प्रश्न है जिसमें एक एजेंट तालिका के साथ शामिल है और एक (कई से कई) कार्य के साथ नौकरियों के संबंध में यह ठीक काम करता है लेकिन मुद्दा यह रिटर्न है स्ट्रिंग में सब कुछ।वाईआई 2 सक्रिय रिकॉर्ड जेएसओएन प्रतिक्रिया, प्रकार कास्टिंग समस्या
$query = self::find()
->select("job.*, agent.first_name,agent.last_name")
->leftJoin('agent', 'job.agent_id = agent.id')
->with('tasks')
->asArray()
->all();
और JSON इनकोडिंग परिणाम:
{
"success": true,
"data": [
{
"id": "10",
"customer_id": "1",
"job_type": "normal",
"created": "2016-06-22 10:19:25",
"first_name": "Shayan",
"last_name": "",
"tasks": [
{
"id": "10",
"job_id": "10",
"title": "bring food",
"instruction": null,
"created": "2016-06-22 10:19:25",
},
{
"id": "10",
"job_id": "10",
"title": "bring pizza",
"instruction": null,
"created": "2016-06-22 10:19:25",
},
]
}
यदि आप आईडी, CUSTOMER_ID जैसे क्षेत्रों नोटिस और इन सभी पूर्णांक हैं job_id लेकिन यह स्ट्रिंग के रूप में वापसी नीचे क्वेरी है। लेकिन अगर मैं उपरोक्त क्वेरी से -> asArray() को हटा देता हूं तो यह वैध प्रकार कास्टिंग लौटाता है लेकिन समस्या यह है कि यह रिलेशनल और बाएं जॉइन एजेंट टेबल फ़ील्ड को छोड़ देती है, यह केवल जॉब टेबल फ़ील्ड्स लौटाती है - उपर्युक्त क्वेरी से -> asArray() को हटाने के बाद प्रतिक्रिया होती है।
{
"success": true,
"data": [
{
"id": 10,
"customer_id": 1,
"name": null,
"job_type": "normal",
"created": "2016-06-22 10:19:25",
},
यदि आप प्रतिक्रिया यह एजेंट टेबल FIRST_NAME, LAST_NAME और संबंधपरक डेटा कार्य नहीं है इसके बाद के संस्करण में नोटिस पूरी तरह से छोड़ दिया है, लेकिन आईडी और CUSTOMER_ID पूर्णांक में है।
क्या किसी को भी एक ही समस्या का सामना करना पड़ा है? आपकी मदद की अत्यधिक सराहना की जाएगी। अग्रिम धन्यवाद।
होनी चाहिए ऑटो प्रकार कास्टिंग के बजाय इसे मैन्युअल रूप से कर रही है , क्या इसका कोई कामकाज है? –
दुर्भाग्यवश, मुझे इसे बदलने का कोई तरीका नहीं दिख रहा है (या कम से कम मुझे इसके बारे में पता नहीं है) क्योंकि यह [डिफ़ॉल्ट व्यवहार] है (https://github.com/yiisoft/yii2/issues/9329#issuecomment- 128343292), डेवलपर के अनुसार। लेकिन यह एक बग या कुछ हो सकता है। मैंने उपसर्गों के साथ भी काम किया, इसका उपयोग करना मुश्किल नहीं है। –
लेकिन यदि आप केवल ऐरे() -> सभी() के बजाय केवल सभी() का उपयोग करते हैं, तो यह वैध डेटाटाइप देता है लेकिन समस्या यह है कि यह केवल एकल तालिका डेटा देता है जो संबंधों को छोड़ देता है और जुड़ता है। –