排除限制条件的查询的 CodeIgniter 计数记录

CodeIgniter Count Records for Query that Excludes Limit Condition

我想在一个查询中做两件事:使用 limit() 函数,同时获取记录总数作为查询的记录计数,就好像没有使用限制一样。所以,如果总共有 21 条记录满足条件 like '%Gregory%',我想要那个值 returned,即使我使用的是 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();
    }

问题是第一行return中的$data['recordcount']全部记录。我要return第4行满足查询条件的所有记录,但没有第2行找到的限制

你可以在星号(*)前实现SQL_CALC_FOUND_ROWS:

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

这将计算在没有 LIMIT 条件的情况下 returned 的行数。

之后您可以立即 select FOUND_ROWS(),如下所示:

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

这会 return 您要查找的号码。

有关详细信息,请参阅此页面 enter link description here

通常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();