所以我有很多不同的模型类型。评论,帖子,评论等。我想将它们加入到一个集成的Feed中。是否有CakePHP样式合并所有这些数据用于显示,按时间戳排序?
有很多混乱的方法可以做到这一点,但我想知道是否有一些我缺少的标准方法。谢谢!
答案 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行为一次性获取所有内容。