2011-03-03 14 views
5

के बजाय मेरा मॉडल ऑब्जेक्ट लौटाएं, यह सुनिश्चित न करें कि इसे phrasing करने का सबसे अच्छा तरीका मेरे साथ सहन करें।कोडिग्निटर - stdClass ऑब्जेक्ट

कोडनिर्देशक के भीतर मैं अपने ऑब्जेक्ट का कोई रिकॉर्ड सेट वापस नहीं कर सकता हूं लेकिन यह एक "मॉडल" ऑब्जेक्ट (उदाहरण के लिए एक पृष्ठ ऑब्जेक्ट) के रूप में नहीं है, जिसे मैं अन्य विधियों का उपयोग करने के लिए उपयोग कर सकता हूं उस मॉडल के भीतर।

क्या मुझे यहां एक चाल याद आ रही है? या यह सीआई के भीतर मानक कार्यक्षमता है?

उत्तर

8

हां, मूल रूप से इस काम के लिए आपको अपने मॉडल ऑब्जेक्ट गुणों को कक्षा-व्यापी घोषित करने की आवश्यकता है, और वर्तमान मॉडल ऑब्जेक्ट होने के कारण $this देखें।

class Blogmodel extends CI_Model { 

    var $title = ''; 
    var $content = ''; // Declare Class wide Model properties 
    var $date = ''; 

    function __construct() 
    { 
     // Call the Model constructor 
     parent::__construct(); 
    } 

    function get_entry() 
    { 
     $query = $this->db->query('query to get single object'); 
     $db_row = $query->row();   //Get single record 

     $this->title = $db_row->title; 
     $this->content = $db_row->content; //Populate current instance of the Model 
     $this->date = $db_row->date; 

     return $this;      //Return the Model instance 
    } 
} 

मेरा मानना ​​है कि get_entry() एक वस्तु प्रकार Blogmodel वापस आ जाएगी।

+0

बहुत बढ़िया धन्यवाद - टी टोपी ने मुझे पूरी तरह से स्पष्ट किया है। – simnom

+3

यहां वास्तविक सवाल है, क्यों न केवल यह करें: 'फ़ंक्शन get_entry ($ id) {$ this-> डीबी-> जहां (' आईडी ', $ आईडी) -> प्राप्त करें (' blog_table ') -> पंक्ति (0, "ब्लॉगमोडेल"); } '? सीआई के साथ – mkoistinen

+0

, mkoistinen का तरीका करने का सही तरीका है। हालांकि jondavidjohn रास्ता काम कर रहा है। – twnaing

0

आप की तरह sth की जरूरत नहीं है:

$this->title = $db_row->title; 
     $this->content = $db_row->content; //Populate current instance of the Model 
     $this->date = $db_row->date; 

बस परिणाम के लिए रखा() विधि उर मॉडल:

result(get_class($this)); 

या

result(get_called_class()); 

और आपको यूआर मॉडल का उदाहरण मिलेगा!

0

इस समस्या के मेरे समाधान में जोंडविदजोहन के जवाब और mkoistinen की टिप्पणी का संयोजन शामिल था।

के अनुसार

CodeIgniter documentation:

तुम भी परिणाम के लिए एक स्ट्रिंग पारित कर सकते हैं() जो प्रत्येक परिणाम वस्तु के लिए इन्स्तांत करने के लिए एक वर्ग का प्रतिनिधित्व करता है (ध्यान दें: इस वर्ग लोड किया जाना चाहिए)

कि ज्ञान के साथ सशस्त्र, हम इस तरह से jondavidjohn के समाधान के पुनर्लेखन कर सकते हैं:

class Blogmodel extends CI_Model { 

    var $title = ''; 
    var $content = ''; // Declare Class wide Model properties 
    var $date = ''; 

    function __construct() 
    { 
     // Call the Model constructor 
     parent::__construct(); 
    } 

    function get_entry() 
    { 
     $query = $this->db->query('query to get single object'); 
     $blogModel = $query->row('Blogmodel'); //Get single record 

     return $blogModel; //Return the Model instance 
    } 
} 
संबंधित मुद्दे