CakePHP哲学问题

时间:2011-08-09 04:56:54

标签: cakephp

所以我有很多不同的模型类型。评论,帖子,评论等。我想将它们加入到一个集成的Feed中。是否有CakePHP样式合并所有这些数据用于显示,按时间戳排序?

有很多混乱的方法可以做到这一点,但我想知道是否有一些我缺少的标准方法。谢谢!

3 个答案:

答案 0 :(得分: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']);
});

答案 1 :(得分:0)

哲学?洛尔

不,我认为没有。虽然你可以在app_model中编写一个afterSave()。检查您要查找的数据,如果找到,请将其放入缓存中。它可能会很混乱,但至少它在一个地方,并不会对性能产生太大影响。

答案 2 :(得分:0)

绝对没有办法自动合并数据,但不是为每个关系触发单独的查询,而是可以使用CakePHP的Containable行为一次性获取所有内容。