我这样做是为了将用户添加到收藏夹中的所有帖子分页:
$favs = $this->Favorite->find('all', array(
'fields' => array(
'Favorite.post_id'
),
'conditions' => array(
'Favorite.user_id' => $this->Auth->user('id')
)
));
$favs = Set::format($favs, '{0}', array('{n}.Favorite.post_id'));
$posts = $this->paginate('Post', array(
'Post.id' => $favs
));
有没有更有效的方法来做到这一点,或者它应该是这样吗?
感谢您的帮助。
答案 0 :(得分:0)
此处您并不需要使用find
方法,因为paginate
的工作方式与find
非常相似,除了对结果进行分页。
因此,您只需使用paginate
方法即可完成所需操作。
我怀疑这会显着提高性能,但它会让你的代码更简单。
答案 1 :(得分:0)
谢谢你的帖子,但我昨天找到了一个简单的解决方案。我希望它对某些人有帮助
$posts = $this->paginate('Post', array(
'Post.id IN( (SELECT `Favorite` . `post_id` FROM `favorites` AS `Favorite` WHERE `Favorite`.`user_id` = ' . $this->Auth->user('id') . ') )'
));