CakePHP 1.2.5中的多个模型分页

我正在为博客创建视图,该视图将博客文章,评论和上载的媒体项目混合到一个大的网格布局中.我已经在CakePHP和关联中建立了各个模型,其中一些如下:

Comment BelongsTo Post or Media
Post HasMany Media

我正在使用的方法是尝试将所有三个模型(评论,媒体,发布)分类为一大组数据,然后可以对它们进行分页.

我已经在数据库中有一个“创建的”日期时间字段.我了解如何使用CakePHP PaginationHelper对每个单独的数据库调用进行分页.我也合并了数组.但是,混合单个数据库调用然后合并数组似乎破坏了分页,因为它不能与PaginationHelper一起使用(据我所知).

您对此有什么建议吗?

另外,我想减少数据库调用次数,因此按照这些原则提出的任何建议都是不错的选择.谢谢!

〜安德鲁

解决方法:

听起来您想针对这3个模型使用某种UNION选择.您可以通过重写模型的认paginate和paginateCount方法来实现. Cookbook(http://book.cakephp.org/view/249/Custom-Query-Pagination)中介绍了基础知识.

听起来您想将find(all)替换为find(‘query’),如下所示:

/**
 * Overridden paginate method - group by week, away_team_id and home_team_id
 */
function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) {
    $recursive = -1;
    $group = $fields = array('week', 'away_team_id', 'home_team_id');
    return $this->query('SELECT field1, field2 FROM table1 
                         UNION SELECT field1, field2 FROM table2 
                         LIMIT '.(($page-1)*$limit).', '.$limit);
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...