如何在cakephp中对自定义查询结果进行分页

我正在开发一个cakephp项目,并且正在开发cakephp.正如标题中所提到的,我需要对mysql查询的结果集进行分页,以便在视图中显示它们.

通过这种方式,我可以对“Asin”模型的结果进行分页.

$this->paginate =array('Asin'=>array(
            'fields' => array('sku','fnsku'),'conditions' => $marketplace,'page' => 1,'limit' => 20,'order' => array('Asin.asin' => 'asc')
        )
$data = $this->paginate('Asin',$criteria);

我还需要一种方法来对以下查询的结果集进行分页.

$resultset = $this->Asin->query("SELECT * FROM products INNER JOIN asins ON products.id=asins.id ORDER BY products.id");

我该如何添加分页?

最佳答案
CakePHP使用两种方法来管理分页查询,即paginate和paginateCount,它们分别用于获取页面数据和总记录数.要使分页与自定义查询一起使用,我们需要在我们的模型文件中实现上述功能,您希望在这些功能中使用分页来处理自定义查询.

public function paginate($conditions,$fields,$order,$limit,$page = 1,$recursive = null,$extra = array()) {    
    $recursive = -1;

    // Mandatory to have
    $this->useTable = false;
    $sql = '';

    $sql .= "Your custom query here just do not include limit portion";

    // Adding LIMIT Clause
    $sql .= (($page - 1) * $limit) . ',' . $limit;

    $results = $this->query($sql);

    return $results;
}

….

public function paginateCount($conditions = null,$recursive = 0,$extra = array()) {

    $sql = '';

    $sql .= "Your custom query here just do not include limit portion";

    $this->recursive = $recursive;

    $results = $this->query($sql);

    return count($results);
}

最后在控制器动作中

// Do not forgot to set this,not sure why
$this->Asin->recursive = 0;

// Setting up paging parameters
$this->paginate = array('Asin'=>array('limit'=>5));

// Getting paginated result based on page #
$this->set('userData',$this->paginate('Asin'));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


mysql中%不能表示什么
mysql中的column什么意思
mysql中asc什么意思
mysql中的where什么意思
mysql中如何求百分比
mysql中no是不是关键字
mysql中column可以省略吗
mysql中before是什么意思
mysql中主键约束和唯一约束是什么关系
mysql中的varchar是什么意思
在mysql中用来查询结果的函数是?
mysql中enum是什么意思
mysql中on是什么意思
mysql中主键约束和唯一约束怎么区分出来的
mysql中表更新数据的命令是哪个
mysql中or的用法
mysql中的unique如何实现唯一
mysql中and和or的区别
desc在mysql中什么意思
mysql中的unique是什么意思