Результаты подсчета фильтруются по 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 3

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(); 

Вы можете использовать

$this->db->group_by();

Иначе

$this->db->distinct();