2011-09-01 133 views
0

result()的文件說,我們可以通過一個類名來實例化的每個結果對象:http://codeigniter.com/user_guide/database/results.html如何在Codeigniter中用結果對象實例化一個類?

我找不出正確的方式做so.I需要通過從幾個字段結果對象給構造函數。

$query = $this->db->query("SELECT * FROM users;"); 

foreach ($query->result('User') as $user) 
{ 

    echo $row->name; // call attributes 
    echo $row->reverse_name(); // or methods defined on the 'User' class 

}

請讓我知道,如果有更好的方法!

+0

從來沒有試過這個,但它不應該是'echo $ user-> name'(是的,我發現它在文檔中是一樣的) – danneth

回答

0

你不能。

實例不能傳遞任何參數的對象,這意味着你需要創建一個方法,你可以用它來傳遞這些字段的對象,該對象實例化:

$query = $this->db->query("SELECT * FROM users;"); 

foreach ($query->result('User') as $user) 
{ 

    $row->init_my_fields('field1', 'field2'); //instead of passing the fields through the __construct() 
    echo $row->name; // call attributes 
    echo $row->reverse_name(); // or methods defined on the 'User' class 

} 
+0

你測試過了嗎?實例化這種方式的想法似乎並沒有工作。在我的情況下,它不起作用 –

+0

如何加載您試圖實例化的對象? – Repox

+0

想要在文檔中進行實例化。 ($ query-> result('User')as $ user)...不起作用,但最終通過以正常方式完成。任何方式感謝您的幫助。我已通過方法初始化對象。謝謝。 –

0

您可以創建一個靜態類方法在您的User類中創建一個或多個用戶實例。您將需要將相應的實例變量添加到User類。

var $username = FALSE; 
var $password = FALSE; 

public static function get_user_by_id($id) 
{ 
     $CI =& get_instance(); 
     $query = $CI->db->get_where('users', array('id' => $id)); 
     $user = $query->row(0, 'User'); 
     return $user; 
} 

在這個例子中,我得到了訪問數據庫的CodeIgniter實例的引用。由於您不能從一個Class方法訪問數據庫,因爲它不是一個對象實例。