CakePHP 2.x:如何从另一个中的值中订购模型?

时间:2012-07-05 17:40:32

标签: cakephp model pagination associations

这是一个场景:我有一个Posts模型,每个帖子都有Meta通过$hasMany附加。 Meta模型包含一个视图计数器,一个下载计数器等。

这样做是为了避免每次用户访问帖子时更新帖子,并且因为我将有另一个索引,其中最近修改的帖子将驻留在其中,因此每次访问时更改帖子都会失败的目的“最近修改过的”索引,以便将viewsdownloads保存在Meta中。

如何使用Meta模型中的数据(例如下载)分页帖子索引视图,以便帖子按下载排序?

我希望这很清楚,如果您需要更多数据,请在下面发表评论。

1 个答案:

答案 0 :(得分:1)

首先,您需要声明分页设置,例如

   $this -> paginate = array(
            'limit' => 3, // your desired limitation
            'contain' => array('Meta'),
            'fields' => array(
                'Post.title',
                'Post.date_published',
                ...,
                'Meta.downloads',
                'Meta.views'
            ),
            'order' => 'Meta.downloads {ASC|DESC}'
        );

然后你可以像这样分页:

$this -> set('posts', $this -> paginate('Post'));

假设您的模型被称为Post和Meta。

修改 为了使其工作(paginate数组中的contains键),您需要将Containable行为添加到Meta模型中:

public $actsAs = array('Containable');