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

kokeuurv  于 2022-11-12  发布在  PHP
关注(0)|答案(2)|浏览(126)

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

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

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

guykilcj

guykilcj1#

在这里,您实际上不需要使用find方法,因为paginate的工作方式与find基本相同,只是对结果进行分页。
所以你可以只使用paginate方法来做你想做的事情。
我怀疑这是否会显著提高性能,但它会使代码更简单一些。

zbsbpyhn

zbsbpyhn2#

谢谢你们的帖子,但是我昨天找到了一个简单的解决方案。我希望它能对一些人有帮助

$posts = $this->paginate('Post', array(
  'Post.id IN( (SELECT `Favorite` . `post_id` FROM `favorites` AS `Favorite` WHERE `Favorite`.`user_id` = ' . $this->Auth->user('id') . ') )'
));

相关问题