我使用CodeIgniter数据库类来生成结果,然后使用分页类来导航它们。我有一个模型从表中检索成员结果。我想计算查询中的总行数,以便将其传递给分页类。 count_all db helper函数是不够的,因为它不考虑我包含的任何“where”或“join”子句。
如果这是我的查询:
$this->db->select('m.user_id AS id, m.email_address, m.display_name, m.status, UNIX_TIMESTAMP(m.join_date) AS join_date,
l.listing_id, COUNT(l.member_id) AS total_listings,
g.group_id AS group_id, g.title AS group_title')
->from('users AS m')
->join('listings AS l', 'm.user_id = l.member_id', 'left')
->join('groups AS g', 'm.group_id = g.group_id', 'left')
->group_by('m.user_id');
如果我想这样做,我该如何继续使用此查询:
if($query_total = $this->db->get()){
$this->total_results = $query_total->num_rows();
}
$this->db->limit($limit, $offset);
if($query_members = $this->db->get()){
return $query_members->result_array();
}
更新:换句话说,我想使用get()方法运行查询,而不是在查询构建器完成运行时将其清除,以便稍后我可以使用查询的顶部。
答案 0 :(得分:1)
您可以使用Active Record Caching(该页面上的最后一个类别)来获取它。
$this->db->start_cache(); // start caching
$this->db->select('m.user_id AS id, m.email_address, m.display_name, m.status, UNIX_TIMESTAMP(m.join_date) AS join_date,
l.listing_id, COUNT(l.member_id) AS total_listings,
g.group_id AS group_id, g.title AS group_title')
->from('users AS m')
->join('listings AS l', 'm.user_id = l.member_id', 'left')
->join('groups AS g', 'm.group_id = g.group_id', 'left')
->group_by('m.user_id');
$this->db->stop_cache(); // stop caching
然后您可以根据需要使用该查询。
if($query_total = $this->db->get()){
$this->total_results = $query_total->num_rows();
}
$this->db->limit($limit, $offset);
if($query_members = $this->db->get()){
return $query_members->result_array();
}
当您不再需要缓存查询时,也可以刷新缓存。
$this->db->flush_cache();
希望它对你有用。
答案 1 :(得分:0)
您没有在$ this-> db-> get()函数中传递任何表名。 谢谢