这是这样的场景:我有一个Posts
模型,每个帖子都有一个通过$hasMany
附加Meta
。元模型包含一个视图计数器、一个下载计数器等。
这样做是为了避免每次用户访问帖子时都更新帖子,并且因为我会有另一个索引,最近修改的帖子将驻留在其中,因此每次访问时更改帖子都会破坏"最近修改"索引的目的,因此views
和downloads
保存在 Meta 中。
如何使用来自 Meta 模型(如下载)的数据对帖子索引视图进行分页排序,以便按下载对帖子进行排序?
我希望这足够清楚,如果您需要更多数据,请在下面发表评论。
首先,您需要声明分页设置,如下所示
$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。
编辑为了使它起作用(分页数组中的包含键),您需要将 Containable 行为添加到元模型:
public $actsAs = array('Containable');