bra*_*age 16 php mysql activerecord codeigniter
即时通讯使用活动记录,它的工作正常,但我想将$ data ["totalres"]设置为总结果,我的意思是,相同的查询,但没有LIMIT
问题是当你执行查询修饰符时,前面的语句被取消设置,所以我甚至不能在得到结果后添加$ this-> db-> limit().
有任何想法吗?我认为,为了做到这一点,"复制"查询是一种不好的做法
function get_search($start, $numrows, $filter = array())
{    
    ...
    $this->db
    ->select("emp")
    ->from('emp')
    ->join('empr', 'empr.b = empr.id', 'left')
    ->like('code', $code)
    ->limit($numrows, $start);
    ...
    $q = $this->db->get();        
    // number of rows WITHOUT the LIMIT X,Y filter
    $data["totalres"] = ???????;        
    if ($q->num_rows() > 0)
    {        
        $data["results"] = $q->result();
    } else {
        $data["results"] = array();
    }   
    return $data;
}    
Run Code Online (Sandbox Code Playgroud)
    Roc*_*mat 39
您可以使用SQL_CALC_FOUND_ROWS获取将返回的行数sans- LIMIT.请注意,FALSE在select行.这告诉CodeIgniter不要尝试SELECT使用反引号来转义该子句(因为SQL_CALC_FOUND_ROWS它不是一个字段,并且CodeIgniter没有意识到这一点).
$this->db
->select("SQL_CALC_FOUND_ROWS emp", FALSE)
->from('emp')
->join('empr', 'empr.b = empr.id', 'left')
->like('code', $code)
->limit($numrows, $start);
$q = $this->db->get();
Run Code Online (Sandbox Code Playgroud)
然后在运行该查询之后,我们需要运行另一个查询来获取总行数.
$query = $this->db->query('SELECT FOUND_ROWS() AS `Count`');
$data["totalres"] = $query->row()->Count;
Run Code Online (Sandbox Code Playgroud)