2014-12-27 25 views
4

我的問題很簡單。我正在使用codeigniter活動記錄,並且所有模型類所要做的是從屬於該用戶的表中選擇最近的項目。Codeigniter Active Record只選擇第一條記錄而不是最近的

function get_progress($users_id) 
{ 
    $query = $this->db->get('progress'); 
    $this->db->where('user_key', $users_id); 
    $this->db->order_by("id", "desc"); 
    $this->db->limit(1); 
    return $query->row_array(); 
} 

看起來很簡單,但由於某種原因,它抓取了與user_key匹配的最低id。

我試圖改變WHERE語句來

$this->db->where('id', '2'); 

和它的作品,當然,這還只是針對故障排除。我需要變量。

我改寫了幾種方法,包括使用get_where()和將desc更改爲asc。無論如何,它都在抓住低端的ID。我如何選擇最高的id,其中user_key是匹配的數字。

回答

1

你可以試試下面

function get_progress($users_id){ 
    return $this->db->from('progress') 
    ->where('user_key', $users_id) 
    ->order_by("id", "DESC") 
    ->get() 
    ->row(); 
} 

的代碼,你會得到最後的近期行作爲STD Class對象

+0

使用效果時,這將返回undefined指數,所以不認爲這是一個有效的查詢。 – Goose

+0

可以顯示代碼?你在哪裏得到未定義的索引? – Touhid

+0

爲std類,你必須使用像 $ row = $ this-> My_model-> get_progress($ users_id); <?php echo $ row-> column_name; ?> – Touhid

1
function get_progress($users_id) 
{ 
     $this->db->select('*') 
     ->from('progress') 
     ->where('user_key',$users_id) 
     ->order_by('id','desc') 
     ->limit(1); 
     $q=$this->db->get(); 
     return $q->result_array(); 
}