我想在一个查询中做两件事:使用limit()函数,但也获取记录总数作为查询的记录计数,就好像没有使用限制一样。因此,如果总共有21条符合like '%Gregory%'
条件的记录,即使我使用limit(10,0)
,我仍希望返回该值。
这是我的代码:
$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();
}
问题是第一行中的$ data [' recordcount']会返回所有记录。我希望它返回符合第4行查询条件的所有记录,但没有在第2行找到限制。
答案 0 :(得分:1)
您可以在星号(*)之前实现 SQL_CALC_FOUND_ROWS ,如下所示:
$this->db->select('SQL_CALC_FOUND_ROWS *')->from('assets')..etc
这将计算在没有LIMIT条件的情况下返回的行数。
之后,您可以立即选择 FOUND_ROWS():
$this->db->select('FOUND_ROWS()')->get();
这将返回您要查找的号码。
有关更多信息,请参阅此页面 enter link description here
答案 1 :(得分: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();