我想要执行两个查询,一个用于获取所有结果的计数,另一个用于获得9到9的实际结果。我的问题是当我尝试获取结果的计数时:第二个查询获得所有结果没有WHERE
子句的数据库中的行。
$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$courses->count(); // returns 15
$courses->offset(($per_page)*9)->limit(9);
$courses->get(); // returns 9 rows from all database (like select * from courses limit 9) without where country=france
我的问题是我想要计算所有结果,但我想为分页目的只获得9个结果
新手codeigniter用户需要的帮助
class Course extends DataMapper {
var $table = 'course';
var $error_prefix = '<li>';
var $error_suffix = '</li>';
function __construct($id = NULL) {
parent::__construct($id);
}
}
答案 0 :(得分:1)
据我所知,您必须对数据库执行两次查询:
您的问题是您认为有效记录会保留您的结果。当您执行count
时,Datamapper会返回查询结果,并为新查询做好准备,因此,它不会保留where子句。
尝试分两步完成。计算:
$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$counting = $courses->count(); // returns 15
检索结果:
$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$courses->offset(($per_page)*9)->limit(9);
$results = $courses->get(); // returns 9 rows from all database (like select * from courses limit 9) without where country=france