baloyou 发表于 2011-6-13 17:15:00

如何扩展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 的话,这种需求应该怎么完成呢?或者说 能少些代码获取结果集总数,用于分页。

baloyou 发表于 2011-6-13 17:38:56

现在是直接这样把数据库的函数给抽出来重构了一下。。。

        /**
       * 改装的用于获取当前结果集的总数(不带分页的)
       * 它不能兼容 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;               
        }

jeongee 发表于 2011-6-13 17:55:55

baloyou 发表于 2011-6-13 17:38 static/image/common/back.gif
现在是直接这样把数据库的函数给抽出来重构了一下。。。

必须硬改

baloyou 发表于 2011-6-13 18:06:00

做了一个很奇怪的分页方法,就是为了简化分页代码。

        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;
        }

asskate 发表于 2011-11-30 00:18:50

google 搜到楼主的帖子
需求 跟 楼主一样
找到 解决方案了    国外开发者弄的
代码 在附件中

baloyou 发表于 2013-7-2 15:06:05

asskate 发表于 2011-11-30 00:18 static/image/common/back.gif
**** 作者被禁止或删除 内容自动屏蔽 ****

多谢~~~ 我最后是自己写了一个PAGE类,不用CI的了。。

longjianghu 发表于 2013-7-4 09:33:45

CI只是提供了一个工具,CI做分页本来就很简单,写一个方法封装一下吧。
页: [1]
查看完整版本: 如何扩展ci database/DB_active_rec.php呢,需要这样一个功能