Результаты подсчета фильтруются по distinct () или group by () в Codeigniter
Я хочу подсчитать свои результаты активного запроса записи с помощью 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()
?
2 ответа:
$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();