特にCodeIgniterとActive Recordを初めて使用します。通常のSQLでこれをうまく行う方法を知っていますが、学習しようとしています。
テーブルの1つからデータを選択し、CodeIgniters Active Recordクラスを使用して返される行数をカウントするにはどうすればよいですか?
ありがとう、トム。
結果関数をご覧ください here :
$this->db->from('yourtable');
[... more active record code ...]
$query = $this->db->get();
$rowcount = $query->num_rows();
そして、テーブル内のすべての行のカウントを取得したい場合
$table_row_count = $this->db->count_all('table_name');
これはあなたのモデルに行きます:
public function count_news_by_category($cat)
{
return $this->db
->where('category', $cat)
->where('is_enabled', 1)
->count_all_results('news');
}
現在のプロジェクトの例です。
ベンチマーク によると、このクエリは次の場合よりも高速に動作します。
$this->db->select('*')->from('news')->where(...);
$q = $this->db->get();
return $q->num_rows();
クエリの行数だけが必要で、実際の行データが必要ない場合は、 count_all_results
を使用します
echo $this->db
->where('active',1)
->count_all_results('table_name');
ドキュメントの息子を読んでください!
$query->num_rows();
これは、2つの異なる方法で実行できます。
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.
$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;
}
これは、条件が影響する行またはデータを探している場合にも非常に便利な機能です
function num_rows($table)
{
return $this->db->affected_rows($table);
}
モデルのこのコードセグメント
function getCount($tblName){
$query = $this->db->get($tblName);
$rowCount = $query->num_rows();
return $rowCount;
}
これは管理者向けです
public function index() {
$data['employeeCount']= $this->CMS_model->getCount("employee");
$this->load->view("hrdept/main",$data);
}
これは表示用です
<div class="count">
<?php echo $employeeCount; ?>
</div>
このコードは私のプロジェクトで使用されており、適切に機能しています。
function getCount(){
return $this->db->get('table_name')->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;