#php #mysql #codeigniter #activerecord #codeigniter-2
#php #mysql #codeigniter #activerecord #codeigniter-2
Вопрос:
Я следую руководству по разбивке на страницы с помощью CI / jQuery. В руководстве они получают общее количество строк, выполняя:
$config['total_rows'] = $this->db->count_all('tblUsers');
Они получают общее количество пользователей для определения разбивки на страницы. Тем не менее, они получают ВСЕ пользователи. В моем приложении мне нужны только пользователи с определенным присвоенным им значением, в данном случае ‘role’.
Мне нужны только пользователи, где role = 1
в моей базе данных.
Я попробовал пару вещей с ->count()
(из класса Active Record DB CI) или пытаясь 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
Заранее спасибо. Приветствуется любая помощь.
Ответ №1:
Вы могли бы просто создать псевдоним для count(*)
столбца результатов:
select count(*) as number_of_entries from tblusers where role = '1'
Теперь вы можете использовать number_of_entries
в качестве ключа из результирующего массива для доступа к нужному значению.
Комментарии:
1. Хи-хи, я чувствую себя таким глупым сейчас из-за того, что не заметил этого. Всегда пытаюсь сделать что-то сложнее : ( Спасибо!
Ответ №2:
Не является положительным, но, похоже, все, что вам нужно, это присвоить этому столбцу имя. Например,
... = $this->db->query("select count(*) as colname from tblusers where role = '1'")->result_array();
Я подозреваю, что это сработает.
Ответ №3:
Для чтения индекса count (*) используйте следующее, чтобы создать поле для чтения:
select count(*) as cnt from tblusers where role = 1
Теперь у вас будет:
Array ( [0] => Array ( [cnt] => 2 ) )