हाय वहाँ सिर्फ सवालसबसे अच्छा तरीका है Yii में मॉडल से संबंधित डेटा प्राप्त और वापसी json
im एक परियोजना है कि सामने के छोर पर sproutcore उपयोग कर रहा है के लिए एक शोकहारा आवेदन पर काम करने के लिए।
मेरा प्रश्न वास्तव में जेसन लौटने की आवश्यकता होने पर अन्य संबंधित मॉडल के साथ मॉडल से डेटा को पकड़ने का सबसे प्रभावी तरीका क्या है। मैंने कल पढ़ा था कि मेरे उदाहरण के लिए एरे के साथ काम करते समय डीएओ परत को काम करने की सिफारिश की गई है, यह मेरे पास अब तक है।
मेरे पास ग्राहकों की एक सूची है, प्रत्येक ग्राहक HAS_MANY ब्रांड और प्रत्येक ब्रांड HAS_MANY परियोजनाएं हैं। नहीं यहाँ अपने ब्रांड के साथ ग्राहकों के पीछे एक अच्छी तरह से गठन सरणी मिल मैं क्या
$clients = Yii::app()->db->createCommand('select client.* from client where client.status = 1')->queryAll();
foreach($clients as $ckey => $client)
{
$clients[$ckey] = $client;
$brand_ids = Yii::app()->db->createCommand('select brand.id as brand_id, brand.client_id as b_client_id from brand where brand.client_id ='.$client['id'])->queryAll();
foreach($brand_ids as $bkey => $brand_id)
{
$clients[$ckey]['brands'][] = $brand_id['brand_id'];
}
}
इस लौटा रहा है मैं अब तक चाहते हैं, लेकिन यह क्या im के बाद प्राप्त करने के लिए सबसे प्रभावी तरीका है ??
यदि आपके पास अपनी तालिका 'क्लाइंट' के लिए CACTiveRecord ऑब्जेक्ट नहीं है, तो कृपया इसे पहले करें (देखें: http://www.yiiframework.com/doc/guide/1।1/en/database.ar)। और इसके बाद आप डेटा को सरल प्राप्त कर पाएंगे: '$ क्लाइंट = क्लाइंट :: मॉडल() -> के साथ ('ब्रांड') -> findByAttributes (सरणी ('स्थिति' => 1));' –
जैसा कि मैं जेसन लौटने जा रहा हूं, डीएओ परत के साथ काम करना बेहतर नहीं है क्योंकि आरआर का उपयोग करके क्यूरी प्रदर्शन करने के लिए मुझे बहुत अधिक जानकारी मिलती है। तो जब मैं सरणी को एन्कोड करने के लिए आती हूं तो मुझे वापस लौटने की आवश्यकता से अधिक वस्तुओं के साथ समाप्त होता है ?? –
यदि मैं सही से समझ गया: 1) आप कॉलम लिख सकते हैं जिसे आप चुनना चाहते हैं (मॉडल क्लास 'क्लाइंट 'फेंकें और' ब्रांड' से संबंध बनाएं) 2) इसके बाद, इन 2.1 का चयन करने के बाद' foreach' कथन करें) और जेसन में कनवर्ट करें जैसा कि आपने अपने प्रश्न उदाहरण / में किया है, फिर भी मैं टेबल के लिए मॉडल बनाने के लिए पहले की सिफारिश करता हूं। मैं इसे पहले करता हूं और यदि मेरे पास टेबल पर कुछ वैश्विक परिवर्तन हुए हैं, तो मैं केवल अपनी मॉडल कक्षा बदलता हूं। –