codeigniter count_all_results

后端 未结 7 1775
眼角桃花
眼角桃花 2021-02-14 03:37

I\'m working with the latest codeIgniter released, and i\'m also working with jquery datatables from datatables.net

I

7条回答
  •  死守一世寂寞
    2021-02-14 03:43

    If your queries contain a group by, using count_all_results fails. I wrote a simple method to work around this. The key to preventing writing your queries twice is to put them all inside a private method that can be called twice. Here is some sample code:

    class Report extends CI_Model {
        ...
        public function get($page=0){
            $this->_complex_query();
            $this->db->limit($this->results_per_page, $page*$this->results_per_page);
            $sales = $this->db->get()->result(); //no table needed in get()
    
            $this->_complex_query();
            $num_results = $this->_count_results();
    
            $num_pages = ceil($num_results/$this->results_per_page);
    
            //return data to your controller
        }
    
        private function _complex_query(){
            $this->db->where('a', $value);
            $this->db->join('(subquery) as s', 's.id = table.s_id');
            $this->db->group_by('table.column_a');
    
            $this->db->from('table'); //crucial - we specify all tables here
        }
    
        private function _count_results(){
            $query = $this->db->get_compiled_select();
            $count_query = "SELECT count(*) as num_rows FROM (".$query.") count_wrap";
            $r = $this->db->query($count_query)->row();
            return $r->num_rows;
        }
    }
    

提交回复
热议问题