所以我在我的模型中有一个函数,它可以为一个分页表提供工作,但前提是它们还没有被预订。
我的第一个函数计算了有多少页面的结果等。
function record_count() {
$this->db->select('id');
$this->db->from('jobs');
$this->db->where('`id` NOT IN (SELECT `jobs_id` FROM `jobs_user`)', NULL, FALSE);
return $this->db->count_all("jobs");
}
我的第二个实际上带来了工作。
function getPagedJobs($limit, $start){
$this->db->limit($limit, $start);
$grabPagedJobs = $this->db->where('`id` NOT IN (SELECT `jobs_id` FROM `jobs_user`)', NULL, FALSE)->get("jobs");
if ($grabPagedJobs->num_rows() > 0) {
foreach ($grabPagedJobs->result() as $row) {
$data[] = $row;
}
return $data;
}
return false;
}
问题是第二个函数可以正常工作,并且不会显示已预订的作业。但是,计算页面的第一个功能似乎仍然计算所有结果,即使是已预订的结果。因此,在我的分页结果上给我空页和PHP无效参数。
我用很多方法搞砸了,如果可能的话,我会更喜欢积极的记录,但我没有成功。
谢谢,
答案 0 :(得分:1)
在您的实现中,您使用函数$this->db->count_all
来计算表中的所有行。
如果要计算特定查询中的行数,则应使用$this->db->count_all_results
函数。正确的实施是:
function record_count() {
$this->db->select('id');
$this->db->from('jobs');
$this->db->where('`id` NOT IN (SELECT `jobs_id` FROM `jobs_user`)', NULL, FALSE);
return $this->db->count_all_results("jobs");
}
答案 1 :(得分:1)
您的声明错误,
return $this->db->count_all("jobs");
count_all("jobs")
会在jobs
表格中为您提供行数。
用此替换 -
return $this->db->count_all_results("jobs");
阅读文档 - http://ellislab.com/codeigniter/user-guide/database/active_record.html
或count
中ci
的替代方法,
$this->db->select('COUNT(*) as count');
$this->db->where('`id` NOT IN (SELECT `jobs_id` FROM `jobs_user`)', NULL, FALSE);
$query = $this->db->get('jobs');
$result = $this->db->result($query);
return $result->count;