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

findここでメソッドを使用する必要はありません。結果のページ付けを除いて、paginateほとんど同じように機能するからです。find

したがって、メソッドを使用するだけで、やりたいことができますpaginate

これによりパフォーマンスが大幅に向上するとは思えませんが、コードが少し簡単になります。

于 2011-05-02T18:16:42.673 に答える
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 に答える