2011-09-23 28 views
0

這裏是他們的文件說將模型綁定到CodeIgniter中的查詢結果?

你也可以傳遞一個字符串,導致(),它代表了一類以 實例化每個結果對象(注:這個類必須被加載)

$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 
} 

儘管它們回顯$行而不是$ user ...這似乎並不適用於我。這是我測試的版本,它

型號

class User extends CI_Model{ 
    var $first; 
    var $last; 
.. 
    function getName() { 
     return $this->first + " " + $this->last; 
    } 
} 

控制器

class Tester extends CI_Controller { 

    public function index() { 
      $this->load->model('User'); 
      $query = $this->db->query('SELECT * from USERS'); 
      $data = array (
       'regular' => $query->result(), 
       'modeled' => $query->result('User') 
     ); 
      $this->load->view('test', $data); 
    } 
} 

查看

foreach ($regular as $row) { 
    echo "{$row->FIRST} {$row->LAST} <BR/>"; 
} 

echo "<br/>"; 

foreach ($modeled as $row) { 
    echo "{$row->getName()} <BR/>"; 
} 

是否有東西,我做錯了或誤解?我會假設根據他們的文檔,如果我將一個類分配給結果集,那麼該類應該填充結果?現在,知道映射哪個字段對我來說是一個謎,並且很可能是這不起作用的原因。我想也許我需要修改構造函數來完成這個映射,但是我沒有看到任何有關如何去做這件事的文檔。我試着在構造函數中放入一個參數,假設它是一個StdClass數組,但似乎不起作用。

任何澄清將是偉大的!

+0

你有沒有試過echo $ user-> name; – Bruce

+0

$ query-> result('User')這將永遠不會工作,如果你使用把$ query-> result_array(); –

回答

0

因此,我明白檢查db_results函數的實際源代碼,我認爲這是由於查詢結果列的情況。而且似乎CI將所有內容默認爲大寫,除非您在查詢字符串中將其指定爲小寫。

因此總而言之,無論列的情況在您的查詢中,應該是您的模型中的值的情況!

雖然看起來很荒謬......我可能會看到如果我可以編輯核心類以便不區分大小寫。除非有人有更好的選擇。

相關問題