Codeigniter count_all 用于分页

Posted

技术标签:

【中文标题】Codeigniter count_all 用于分页【英文标题】:Codeigniter count_all for pagination 【发布时间】:2013-05-12 02:50:19 【问题描述】:

我正在尝试在 codeigniter 中创建分页,并且可以正常工作,但是我遇到了一个小问题。它似乎正在加载我数据库中的所有条目,而不是我想要的选定条目。

public function original_count() 
     $this->db->where('type', 'Original');
      return $this->db->count_all("story_tbl");
    

我知道发生的事情是最后一行推翻了我之前的陈述。我似乎无法找到解决它的方法。我只尝试了一个 staight sql 语句然后返回它,但我也无法让它工作。

这是我的声明...

SELECT COUNT(*) FROM story_tbl where type = 'Original';

非常感谢一些帮助! :)

【问题讨论】:

【参考方案1】:

CI 有内置的计数方法

count_all_results()

允许您确定特定 Active Record 查询中的行数。查询将接受 Active Record 限制器,例如 where()、or_where()、like()、or_like() 等。示例:

https://www.codeigniter.com/userguide2/database/active_record.html

$total_count = $this->db->count_all_results('story_tbl', array('type' =>'Original'));

【讨论】:

谢谢!我实际上有这样的事情......几乎是逐字记录。不幸的是,它对我不起作用。它不断向我抛出一个错误,告诉我我无法返回整数。幸运的是,上面的答案解决了我的问题! :)【参考方案2】:

您也可以使用内置的num_rows() 函数...

$query = $this->db->where('type', 'original')->get('story_tbl');
return $query->num_rows();

【讨论】:

【参考方案3】:

先试试这个。

$query = $this->db->where('tbl_field', 'value')
         ->get('your_table');
return $query->num_rows();

除了这个Codeigniter还有它自己的功能如下。

 $this->db->where('tbl_field', 'value')
             ->get('your_table');
    return $this->db->count_all_results();

或者使用这个。

return $this->db->count_all('your_table');

【讨论】:

【参考方案4】:

Where 在 count_all 条件下不起作用..您可以使用以下方法找出总行数..

public function count_all() 
    $this->db->select ( 'COUNT(*) AS `numrows`' );
    $this->db->where ( array (
            'type' => 'Original'
    ) );
    $query = $this->db->get ( 'story_tbl' );
    return $query->row ()->numrows;

【讨论】:

以上是关于Codeigniter count_all 用于分页的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 3分页不起作用

用于排序、分页和过滤的 CodeIgniter 优雅库 [关闭]

Kohana ORM count_all() 工作但 find_all() 不是

将分页与查询字符串一起用于搜索表单,该表单的方法设置为进入 codeigniter

如何配置分页codeigniter?

CodeIgniter 搜索结果分页