0

我这样做是为了对用户添加到收藏夹的所有帖子进行分页:

$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
));

有没有更有效的方法来做到这一点,还是应该这样?

4

2 回答 2

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') . ') )'
));
于 2011-05-03T11:43:44.623 回答
0

您实际上不需要在find这里使用方法,因为除了对结果进行分页之外,paginate它的工作方式几乎相同。find

paginate所以你可以只用方法做你想做的事。

我怀疑这会显着提高性能,但它会使您的代码更简单一些。

于 2011-05-02T18:16:42.673 回答