2011-01-07 14 views
8

फेलो कोडर से कोडिनेटर मॉडल लोड करना और उपयोग करना। क्या मैं किसी अन्य मॉडल के कोड से मॉडल लोड कर सकता हूं? मैंने सैद्धांतिक और व्यावहारिक कई पदों को पढ़ा है लेकिन किसी ने भी अंतिम जवाब नहीं दिया है।कोडिनेटर 1.7.3 का उपयोग करते हुए एक अन्य मॉडल

मेरे पास एक मॉडल है जिसमें एक ऐसा फ़ंक्शन है जिसमें मैं किसी अन्य मॉडल पर एक ऑपरेशन करना चाहता हूं। कोड इस तरह है:

1: $this->load->model('decision_model'); 
2: $this->decision_model->hello_decision(); 

लाइन 1 काम करता है।

एक PHP त्रुटि आई थी
गंभीरता:: लाइन 2 इस प्रकार है विफल रहता है सूचना
संदेश: अपरिभाषित संपत्ति: Account_model :: $ decision_model
फ़ाइल का नाम: सरल बनाने मॉडल/

account_model.php मैं कोशिश की है बेवकूफ मॉडल, फ़ंक्शन नाम बदलते हैं, मॉडल को लोड करते समय मॉडल को उपनाम देते हैं ... कोई भाग्य

तो, सिद्धांत अलग है, क्या यह करने योग्य है? पहले से

धन्यवाद।

+0

आमतौर पर आप ऐसा करना चाहते हैं जब कोई मॉडल किसी अन्य मॉडल का संदर्भ देता है (उदाहरण के लिए आरडीबीएम में एक विदेशी कुंजी का उपयोग करना)। इस मामले में मूल मॉडल में 'decision_model' विशेषता होगी जो लिंक किए गए मॉडल को संदर्भित करती है। यदि आपके पास ऐसा नहीं है, तो मॉडल लिंक नहीं किए गए हैं और आपके पहले मॉडल से '$ this-> load' का उपयोग करके लोड किए गए मॉडल को किसी भी चीज़ से उपयोगी नहीं किया जाएगा। – Guss

+0

आप कोहाना ढांचे को देखना चाहते हैं जो सीआई पर आधारित है लेकिन इस तरह की चीजों को अनुमति देता है। –

+0

@ गॉस, दो मॉडल को लिंक किया जाना चाहिए - यही कारण है कि मैं दूसरे मॉडल तक पहुंचने की कोशिश कर रहा हूं। यदि मेरे पास मूल मॉडल में संदर्भ है (मुझे लगता है कि आप क्लास एट्रिब्यूट का जिक्र कर रहे हैं), तो मैं इसे निर्णय मॉडल के संदर्भ में कैसे शुरू करूं? धन्यवाद – djeetee

उत्तर

13

आप इस तरह यह कर सकते हैं:

class User_model extends Model 
{ 
    function get_something() 
    { 
     $CI =& get_instance(); 
     $CI->load->model('profile_model'); 
     return $CI->profile_model->get_another_thing(); 
    } 
} 
+0

यह किया था! बहुत बहुत धन्यवाद :) मैं कुछ ऐसा ही कर रहा था लेकिन कोड को एक सहायक और सभी को ले जा रहा था। यह बहुत बदसूरत हो रही थी। एक बार फिर धन्यवाद। – djeetee

+6

सीआई 2.0 में आप सीधे एक मॉडल को दूसरे से कॉल कर सकते हैं। – phirschybar

+0

@phischybar, आप समझते हैं कि यह 1.7.3 है, है ना? –

0

इस प्रयास करें:

$this->load->model('decision_model'); 
$CI =& get_instance(); 
$CI->decision_model->hello_decision(); 
3

सीआई 2.0 में आप सिर्फ एक मॉडल सीधे दूसरे से फोन कर सकते हैं।

0

आप private $_ci; क्लास वेरिएबल भी जोड़ सकते हैं, और इसे अपने कन्स्ट्रक्टर में प्रारंभ कर सकते हैं।

public function __construct($input=null) 
{ 
    $this->_ci =& get_instance(); 

    if ($input != null && is_array($input)) { 
     $this->populate($input); 
    } 
} 

तो यह किसी भी समारोह आप के साथ, हर जगह get_instance() करने की कोई जरूरत काम कर रहे हैं करने के लिए उपलब्ध हो जाएगा।

संबंधित मुद्दे