2011-03-06 36 views
0

我有2個表中的一個保留日誌,另一個保留用戶名。如何從codeigniter中的表中獲取用戶名

表一(日誌)具有

ID|USERID|DATETIME|MESSAGE 

表二(用戶)具有

ID|USERNAME|PASSWORD 

CI中的模型我有

function getRlog(){ 

    $this->db->limit(100); 
    $this->db->order_by("id","desc"); 
    $this->db->where('type', "reservation"); 
    $q = $this->db->get('logs'); 
     if($q->num_rows() > 0) { 
     foreach($q->result() as $row){ 
      $data[] = $row; 
     } 
    return $data; 
    } 

} 

在控制器我有...

function log(){ 
     if (!$this->ion_auth->is_admin()) 
    { 
     $this->session->set_flashdata('message', 'You must be an admin to view this page'); 
     redirect('auth/login'); 
     } else { 
     $data ['user'] = $this->ion_auth->get_user(); 
     $this->load->model('Logs_model'); 
     $data['logs'] = $this->Logs_model->getRlog(); 
     $this->load->view('database/log', $data); 

     } 
} 

我想基礎上,ID從日誌表從用戶得到用戶名表。我應該創建一個外鍵嗎?如果我確實如何獲取用戶名?

回答

0

你可能會做這種方式在你的模型

function getRlog(){ 

    $this->db->limit(100); 
    $this->db->order_by("id","desc"); 
    $this->db->where('type', "reservation"); 
    $q = $this->db->get('logs'); 
    if($q->num_rows() > 0) { 
     $data = array(); //create new data array to be returned 
     foreach($q->result() as $row){ 
      $row->user = $this->ion_auth->get_user($row->userid); //create new user property that contains user object 
      $data[] = $row; //append to new data array with appended user property 
     } 
     return $data; 
    } 
    else { 
     return false; //if no results make sure you return something, either false or empty array depending on your needs. 
    } 
} 

這樣你可以從你的日誌結果訪問整個用戶對象從像這樣的模型返回,假設你的控制器保持不變。

查看

foreach($logs as $log) { 
    echo $log->user->username; 
} 

甚至...

foreach($logs as $log) { 
    echo $log->user->email; //etc... 
} 
+0

它帶來了比需要的信息更多,但它的工作原理謝謝:) – nomie 2011-03-06 22:50:05

+0

吧,好了,你可以很容易地修改模型只得到什麼你需要。這是更多的概念證明。 – jondavidjohn 2011-03-06 23:12:09

相關問題