Запрос Codigniter, возвращающий неверное количество - PullRequest
0 голосов
/ 12 февраля 2019

Я использую воспламенитель кода и создаю запрос, чтобы узнать, сколько людей посетило мероприятие.Поэтому я могу взять число и попытаться вычислить процент.

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь построить запрос в соответствии с Документами Codeigniter 3, но я возвращаю неправильный результат по некоторым причинам ипросто не могу понять, почему.

Прежде всего, вот таблица в моей базе данных, которую я запрашиваю:

my database

ВотФункция, которую я вызываю из моего контроллера:

public function get_event_attendance_percentage($id) {
        $this->db->select('*');
        $this->db->from('attendance');
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $attendancecount = $this->db->get();
        return count($attendancecount);

    }

Я выбираю все из своей таблицы посещаемости, затем я заявляю, что хочу, чтобы все участники посещали событие с идентификатором 17, тогда я также заявляю, где присутствовало = 1

Я хочу вернуть номер 3, но я возвращаю номер 1.

Может кто-нибудь помочь мне увидеть, где я иду не так, пожалуйста?


Я получил это работаетс благодарной помощью @Vickel.Вот запрос, который вернул правильный результат:

public function get_event_attendance_percentage($id) {
        $this->db->select('*');
        $this->db->from('attendance');
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $attendancecount = $this->db->get();
        return $attendancecount->num_rows();
    }

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Если вы хотите просто посчитать количество строк, вы можете использовать $ this-> db-> count_all_results () , как показано ниже.

public function get_event_attendance_percentage($id)
{
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $this->db->from('attendance');
        return $this->db->count_all_results();
}

Проверьте CodeIgniter Manual => https://www.codeigniter.com/user_guide/database/query_builder.html?highlight=count_all#limiting-or-counting-results

ПРИМЕЧАНИЕ: -

num_rows () : - С помощью num_rows () вы сначала выполняете запрос, а затем можете проверить, сколькоряды у вас есть. Полезно, когда вам нужны данные таблицы .

count_all_results () : - С помощью count_all_results () вы получите количество строк, которые ваш запрос произведет, но не дает вам фактический набор результатов. Полезно, когда вам нужно только количество строк для нумерации страниц, нет.записей и т. д.

0 голосов
/ 12 февраля 2019

count() - это встроенная функция php , и при использовании вы «подсчитываете» строку запроса, поэтому возвращает 1, независимо от того,

правильный способ CI - использовать return $attendancecount->num_rows(): см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...