如何重用CodeIgniter Active Record Query

时间:2014-07-21 23:37:32

标签: php codeigniter activerecord

我试图......

  1. 设置一些查询参数和过滤器。
  2. 获取匹配行的总数。
  3. 设置限制和偏移。
  4. 获得结果
  5. 这是我最初的尝试:

    $this->db->select(<aggregation, subqueries>);
    $this->db->from('users');
    $this->db->where(<complex filters>);
    
    $total = $this->db->count_all_results();
    
    $this->db->limit($limit, $offset);
    
    $query = $this->db->get();
    $result = $query->result();
    

    但是在内部调用count_all_results调用_reset_select意味着我必须再次执行第一步 - 不是非常干。

    您将如何以简单,干净的方式实现这一目标?

1 个答案:

答案 0 :(得分:0)

只需使用查询生成器缓存

$this->db->start_cache();

$this->db->select(<aggregation, subqueries>);
$this->db->from('users');
$this->db->where(<complex filters>);

$this->db->stop_cache();

$total = $this->db->count_all_results();

$this->db->limit($limit, $offset);

$query = $this->db->get();
$this->db->flush_cache();

$result = $query->result();
  

https://codeigniter-30-dev.readthedocs.io/zh_TW/latest/database/query_builder.html#this-db-count-all-results