如何扩展ci database/DB_active_rec.php呢,需要这样一个功能
db_active_rec.php 中有这样一个方法:count_all_results()获取当前active的结果集,但是用过这个方法之后就被:$this->_reset_select();了。
我想:
$this->db->select('*')->from('table')->where( array( 'id >'=>100 ) );
$total = $this->db->count_all_results();
$this->db->limit(1,2);
$total 用于分页。
------------------------------------------
不想修改 system 的话,这种需求应该怎么完成呢?或者说 能少些代码获取结果集总数,用于分页。
现在是直接这样把数据库的函数给抽出来重构了一下。。。
/**
* 改装的用于获取当前结果集的总数(不带分页的)
* 它不能兼容 group_by
* @return unknown
*/
function get_db_num(){
$sql = $this->CI->db->_compile_select($this->CI->db->_count_string . $this->CI->db->_protect_identifiers('numrows'));
$query = $this->CI->db->query($sql);
if ($query->num_rows() == 0)
{
return 0;
}
$row = $query->row();
return (int) $row->numrows;
} baloyou 发表于 2011-6-13 17:38 static/image/common/back.gif
现在是直接这样把数据库的函数给抽出来重构了一下。。。
必须硬改 做了一个很奇怪的分页方法,就是为了简化分页代码。
function create_page( $url_path, $page_num = 2, $config = array() ){
$this->CI->load->library('pagination');
$config['base_url'] = site_url($url_path);
$config['total_rows'] = $this->get_db_num();
$config['per_page'] = $page_num;
$config['page_query_string'] = true;
$this->CI->pagination->initialize($config);
$data['page'] = $this->CI->pagination->create_links();
$data['page_num'] = $page_num;
return $data;
} google 搜到楼主的帖子
需求 跟 楼主一样
找到 解决方案了 国外开发者弄的
代码 在附件中 asskate 发表于 2011-11-30 00:18 static/image/common/back.gif
**** 作者被禁止或删除 内容自动屏蔽 ****
多谢~~~ 我最后是自己写了一个PAGE类,不用CI的了。。
CI只是提供了一个工具,CI做分页本来就很简单,写一个方法封装一下吧。
页:
[1]