2010-03-20 18 views
0

在CodeIgniter中,我使用的是base CRUD My_model,但在瀏覽控制器中有這個小問題。我的$ data ['posts']從表中獲取所有帖子,名爲「posts 」。雖然該表中的作者只是一個user_id,這就是爲什麼我需要使用我的「getusername」函數(從ID獲取用戶名)從users表中獲取用戶名。使用基本CRUD模型的控制器問題

雖然我不知道如何從這裏開始,因爲它不只是一個職位。因此,我需要用戶名或者是$ data ['posts']數組或其他智能解決方案的一部分。

任何能幫助我的人?

function index() { 
    $this->load->model('browse_model'); 

    $data['posts'] = $this->browse_model->get_all(); 
    $data['user'] = $this->browse_model->getusername(XX); 

    $this->load->view('header'); 
    $this->load->view('browse/index', $data); 
    $this->load->view('footer'); 
} 

回答

1

的另一種方式做同樣的事情:

function get_all() 
{ 
    $this->db 
     ->select('posts.*, u.username') 
     ->join('users u', 'u.user_id=posts.user_id'); 

    return parent::get_all(); 
} 
+0

/我設置模式+救命爲你,菲爾;)謝謝! – rkj

2

最好的辦法是在通過加入帖子表上的用戶表獲取帖子時獲取關聯的用戶名。這樣你只執行一個數據庫查詢。您可以重寫基本My_model的get_all函數。

function get_all() 
{ 
    $sql = 'SELECT p.*, u.username 
      FROM posts p 
      JOIN users u ON u.user_id=p.user_id'; 

    $query = $this->db->query($sql); 
    return $query->result();  
} 

每個返回的post對象都會有一個username屬性。

$posts = $this->browse_model->get_all(); 
foreach ($posts as $post) 
{ 
    echo $post->username; 
} 
+0

你是一個生命的救星! :)不知道這個JOIN的事情。所以你讓我的開發更容易! – rkj

+0

沒問題。很高興幫助:-) –