В сценарии мне нужно знать количество записей, которое будет возвращать запрос, который в codeigniter может быть выполнен с помощью $query->num_rows()
или $this->db->count_all_results()
. Какой из них лучше и в чем разница между этими двумя?
С помощью num_rows()
вы сначала выполняете запрос, а затем можете проверить, сколько строк вы получили. count_all_results()
с другой стороны, дает только количество строк, которые будет вызывать ваш запрос, но не дает вам фактического набора результатов.
// num rows example $this->db->select('*'); $this->db->where('whatever'); $query = $this->db->get('table'); $num = $query->num_rows(); // here you can do something with $query // count all example $this->db->where('whatever'); $num = $this->db->count_all_results('table'); // here you only have $num, no $query
$this->db->count_all_results
является частью запроса Active Record (подготовка запроса, только возврат номера, а не фактические результаты).
$query->num_rows()
выполняется на объекте $query->num_rows()
после возвращения результатов из БД).
Which one is better and what is the difference between these two
почти лишен меня, кто-то просто хочет получить количество записей без повторного касания или выполнить другой запрос, в котором задействован тот же ресурс. Кроме того, память, используемая этими двумя функциями, в конце концов одинакова, поскольку с count_all_result
вы все еще выполняете get
(в терминах CI AR), поэтому я рекомендую вам использовать другую (или вместо этого использовать count ()), что дало вам возможность повторного использования выгоды.
Существует два способа подсчета общего количества записей, возвращаемых запросом. Сначала это
$query = $this->db->query('select blah blah'); return $query->num_rows();
Это вернет количество строк, которые был выведен из запроса.
второй
return $this->db->count_all_results('select blah blah');
Просто count_all_results потребует снова выполнить запрос.
Мы также можем использовать
return count_all('table_name');
или
$this->db->from('table_name'); return $this->db->count_all_result();
или
$query = $this->db->query('select * from tab'); return $query->num_rows();
Общее количество результатов
$this->db->count_all_results('table name');