2016-01-20 53 views
0

我想在一個查詢中執行兩件事:使用limit()函數,但也獲取記錄的總數作爲查詢的記錄計數,就好像限制wasn沒有用過。因此,如果有21條記錄滿足條件like '%Gregory%',我希望返回該值,即使我使用的是limit(10,0)不包括限制條件的查詢的CodeIgniter計數記錄

這裏是我的代碼:

$data['recordcount'] = $this->db->count_all_results('assets'); 
    $this->db->limit(10, 0); 
    if(isset($data['order'])){ 
     $query = $this->db->select('*')->from('assets')->or_like($array)->order_by($column, $data['order'])->get(); 
    } 

的問題是,$數據[「總記錄」]在第一線返回所有記錄。我希望它返回符合第4行查詢條件的所有記錄,但沒有在第2行中找到限制。

+1

我建議你使用單獨的查詢。儘管這會花費你一點額外的資源。 –

+0

@ javiniar.leonard是的,我試圖找出如何不使用單獨的查詢,但這可能是唯一的解決方案。 – TARKUS

回答

1

通常count_all_results()清除時運行SELECT語句。但通過將第二個參數設置爲FALSE,語句被保留。

我認爲這會對你有用。

$this->db->select('*')->from('assets')->or_like($array); 
    $data['recordcount'] = $this->db->count_all_results('assets', FALSE); 
    $this->db->limit(10, 0); 
    if(isset($data['order'])) 
    { 
    $this->db->order_by($column, $data['order']); 
    } 
    $query = $this->db->get(); 
1

您可以將星號(*),如在此之前實現SQL_CALC_FOUND_ROWS

$this->db->select('SQL_CALC_FOUND_ROWS *')->from('assets')..etc 

這將計算。如果沒有這一限制條件返回的行數。

緊接着,你可以選擇FOUND_ROWS()這樣的:

$this->db->select('FOUND_ROWS()')->get(); 

這將返回你正在尋找的數量。

欲瞭解更多信息,請參閱本頁面 enter link description here