I'm very new to CodeIgniter and Active Record in particular, I know how to do this well in normal SQL but I'm trying to learn.
How can I select some data from one of my tables, and then count how many rows are returned using CodeIgniters Active Record class?
Thanks, Tom.
This question is related to
activerecord
codeigniter
This goes to you model:
public function count_news_by_category($cat)
{
return $this->db
->where('category', $cat)
->where('is_enabled', 1)
->count_all_results('news');
}
It'a an example from my current project.
According to benchmarking this query works faster than if you do the following:
$this->db->select('*')->from('news')->where(...);
$q = $this->db->get();
return $q->num_rows();
This code segment for your Model
function getCount($tblName){
$query = $this->db->get($tblName);
$rowCount = $query->num_rows();
return $rowCount;
}
This is for controlr
public function index() {
$data['employeeCount']= $this->CMS_model->getCount("employee");
$this->load->view("hrdept/main",$data);
}
This is for view
<div class="count">
<?php echo $employeeCount; ?>
</div>
This code is used in my project and is working properly.
You can do this in two different ways:
1. $this->db->query(); //execute the query
$query = $this->db->get() // get query result
$count = $query->num_rows() //get current query record.
2. $this->db->query(); //execute the query
$query = $this->db->get() // get query result
$count = count($query->results())
or count($query->row_array()) //get current query record.
Just gotta read the docs son!
$query->num_rows();
$sql = "SELECT count(id) as value FROM your_table WHERE your_field = ?";
$your_count = $this->db->query($sql, array($your_field))->row(0)->value;
echo $your_count;
function getCount(){
return $this->db->get('table_name')->num_rows();
}
AND, if you just want to get a count of all the rows in a table
$table_row_count = $this->db->count_all('table_name');
If you only need the number of rows in a query and don't need the actual row data, use count_all_results
echo $this->db
->where('active',1)
->count_all_results('table_name');
This is also a very useful function if you are looking for a rows or data with where condition affected
function num_rows($table)
{
return $this->db->affected_rows($table);
}
$this->db->select('count(id) as rows');
$this->db->from('table_name');
$this->db->where('active',1);
$query = $this->db->get();
foreach($query->result() as $r)
{
return $r->rows;
}
Source: Stackoverflow.com