我想用CI计算我的活动记录查询结果(使用postgreSQL)。我使用的是count_all_results()
,适用于大多数查询,但在加入后使用distinct()
或group_by()
时则不行,因为count_all_results()
会忽略这些功能。
这是一个修复版本,它尚未在newsest(2.1.3)稳定版本中实现。 https://github.com/EllisLab/CodeIgniter/commit/b05f506daba5dc954fc8bcae76b4a5f97a7433c1
当我尝试在当前版本中尝试实现此修复时,没有进行额外的过滤。行数保持不变。
有关如何在当前版本中实施此功能的任何提示,或其他方式来计算按distinct()
或group_by()
过滤的结果?
答案 0 :(得分:6)
$this->db->select('COUNT(id)');
$this->db->join();
$this->db->distinct();
$this->db->group_by();
//...etc ...
$query = $this->db->get('mytable');
return count($query->result());
或
$this->db->join();
$this->db->distinct();
$this->db->group_by();
//...etc ...
$query = $this->db->get('mytable');
return $query->num_rows();
答案 1 :(得分:1)
您可以使用
$this->db->group_by();
,否则
$this->db->distinct();
答案 2 :(得分:0)
在我的情况下,从今天开始使用Codeigniter 3.1.11,在进行count_all_results()时要考虑distinct() 。但是,您必须使用该函数,先执行$ this-> db-> select(“ distinct x”)然后进行计数,才不会将DISTINCT限制应用于记录计数。