【问题标题】:Pagination of Multiple Models in CakePHP 1.2.5CakePHP 1.2.5 中多个模型的分页
【发布时间】:2010-12-29 20:56:05
【问题描述】:

我正在开发一个博客视图,它将博客文章、cmets 和上传的媒体项目混合到一个大的网格布局中。我已经在 CakePHP 中设置了各个模型和关联,其中一些如下:

Comment BelongsTo Post or Media
Post HasMany Media

我正在尝试将所有三个模型 (Comment, Media, Post) 分类为一个大型数据数组,然后我可以对其进行分页。

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

您对此有什么建议吗?

另外,我想减少数据库调用的次数,所以任何类似这些方面的建议都会很棒。谢谢!

~安德鲁

【问题讨论】:

    标签: php mysql pagination cakephp-1.2


    【解决方案1】:

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

    听起来你想用 find('query') 替换 find(all) ,如下所示:

    /**
     * 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多