有没有办法在一个查询中找到用户最喜欢的帖子?

时间:2011-05-02 18:03:03

标签: php mysql database cakephp paginator

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

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

有没有更有效的方法来做到这一点,或者它应该是这样吗?

感谢您的帮助。

2 个答案:

答案 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') . ') )'
));
相关问题