繁体   English   中英

在Codeigniter中使用Datamapper运行两个查询

[英]Running two queries with Datamapper in Codeigniter

我想执行两个查询,一个查询获取所有结果的计数,一个查询获取9的实际结果。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);
    }

}

据我所知,您必须对数据库执行两个查询:

  • 一个用于计数。
  • 一种用于检索所需结果的方法。

您的问题是您认为活动记录正在保留您的结果。 当您执行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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM