用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6209|回复: 6
收起左侧

[数据库] 如何扩展ci database/DB_active_rec.php呢,需要这样一个功能

[复制链接]
发表于 2011-6-13 17:15:00 | 显示全部楼层 |阅读模式
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 的话,这种需求应该怎么完成呢?或者说 能少些代码获取结果集总数,用于分页。
 楼主| 发表于 2011-6-13 17:38:56 | 显示全部楼层
现在是直接这样把数据库的函数给抽出来重构了一下。。。

PHP复制代码
        /**
         * 改装的用于获取当前结果集的总数(不带分页的)
         * 它不能兼容 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;            
        }
复制代码
发表于 2011-6-13 17:55:55 | 显示全部楼层
baloyou 发表于 2011-6-13 17:38
现在是直接这样把数据库的函数给抽出来重构了一下。。。

必须硬改
 楼主| 发表于 2011-6-13 18:06:00 | 显示全部楼层
做了一个很奇怪的分页方法,就是为了简化分页代码。

PHP复制代码
        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;
        }
复制代码
发表于 2011-11-30 00:18:50 | 显示全部楼层
google 搜到  楼主的帖子
需求 跟 楼主一样
找到 解决方案了    国外开发者弄的  
代码 在附件中

Extend ci_active_record better.zip

2.77 KB, 下载次数: 55

 楼主| 发表于 2013-7-2 15:06:05 | 显示全部楼层
asskate 发表于 2011-11-30 00:18
**** 作者被禁止或删除 内容自动屏蔽 ****

多谢~~~ 我最后是自己写了一个PAGE类,不用CI的了。。
发表于 2013-7-4 09:33:45 | 显示全部楼层
CI只是提供了一个工具,CI做分页本来就很简单,写一个方法封装一下吧。

本版积分规则