Подсчитать строки в БД, где - PullRequest
4 голосов
/ 11 мая 2011

Я следую учебному пособию по разбиению на страницы с CI / jQuery.В учебном пособии они получают общее количество строк, выполняя:

$config['total_rows'] = $this->db->count_all('tblUsers');

Они получают общее количество пользователей для определения нумерации страниц.Однако они получают ВСЕХ пользователей.В моем приложении мне нужны только пользователи, которым назначено определенное значение, в данном случае «роль».

Мне нужны только те пользователи, где role = 1 в моей БД.

IЯ пробовал пару вещей с ->count() (из класса CI Active Record DB) или пытался count() проверить, сколько «строк» ​​у массива, но я не смог получить нужный мне результат.Я также попытался выполнить обычный запрос: select count(*) from tblusers where role = 1, а затем каким-то образом попытался получить, сколько он возвратил, но увы.

Выполнение

$config['total_row'] = $this->db->query("select count(*) from tblusers where role = '1'")->result_array();

дает мне следующий массив:

Array ( [0] => Array ( [count(*)] => 2 ) )

Однако я не могу прочитать индекс count(*).

Message: Undefined index: count(*)

Я надеюсь, что этокакой-то смысл.В основном я пытаюсь сделать что-то вроде ..

$this->db->where('role', 1)->get('tblUsers')->count()

К сожалению, это не работает: D

Заранее спасибо.Любая помощь приветствуется.

Ответы [ 3 ]

5 голосов
/ 11 мая 2011

Вы можете просто присвоить псевдоним столбцу результатов count(*):

select count(*) as number_of_entries from tblusers where role = '1'

Теперь вы можете использовать number_of_entries в качестве ключа из полученного массива для доступа к нужному значению.

2 голосов
/ 11 мая 2011

Для чтения индекса count (*) используйте следующее для создания читаемого поля:

select count(*) as cnt from tblusers where role = 1

Теперь у вас будет:

Array ( [0] => Array ( [cnt] => 2 ) )
2 голосов
/ 11 мая 2011

Не позитивно, но, похоже, все, что вам нужно, это дать этому столбцу имя.Например,

... = $this->db->query("select count(*) as colname from tblusers where role = '1'")->result_array();

Я подозреваю, что это сработает.

...