2011-08-09 10 views
0

私はたくさんの異なるモデルタイプを持っています。コメント、投稿、レビューなど。そして、それらを1つの統合されたフィードに結合したい。このデータをすべてタイムスタンプ順にマージするCakePHPスタイルはありますか?CakePHPの哲学的な質問

これを行うには面倒な方法がありますが、私は欠けているいくつかの標準的な方法があるのだろうかと思います。ありがとう!

答えて

2

アイテムは異なるテーブルからのものなので、どのような場合でもデータベースから一緒にソートされたアイテムを検索することは困難です。あなたのデータががどのようによく組織、このような非乱雑ような何かが何をすべきによって:

$posts = $this->Post->find(...); 
$reviews = $this->Review->find(...); 
$comments = $this->Comment->find(...); 

$feed = array_merge($posts, $reviews, $comments); 
usort($feed, function ($a, $b) { 
    $a = current($a); 
    $b = current($b); 
    return $strtotime($a['created']) - strtotime($b['created']); 
}); 
0

哲学?笑

いいえ、私はあるとは思わない。 app_modelにafterSave()を書くことはできますが。探しているデータを確認し、見つかった場合はキャッシュに入れます。それはおそらく乱雑ですが、少なくともそれは1つの場所にあり、パフォーマンスにはあまり影響しません。

0

あり、自動的にデータをマージする方法は間違いませんが、代わりにそれぞれの関係のために別々のクエリを発射、あなたはつかむことができますそれは一度にCakePHPのContainableの振る舞いを使用しています。