所以我有很多不同的模型类型。评论、帖子、评论等。我想将它们加入到一个综合提要中。是否有 CakePHP 风格来合并所有这些数据以进行显示,并按时间戳排序?
有很多混乱的方法可以做到这一点,但我想知道是否有一些我缺少的标准方法。谢谢!
由于项目来自不同的表,因此在任何情况下都很难从数据库中检索排序在一起的它们。不过,取决于您的数据组织得如何,像这样的东西应该不会混乱:
$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']);
});
哲学?哈哈
不,我认为没有。虽然你可以在 app_model 中编写 afterSave() 。检查您要查找的数据,如果找到,请将其放入缓存中。它可能会很乱,但至少在一个地方,并且不会对性能产生太大影响。
绝对没有办法自动合并数据,但是您可以使用 CakePHP 的 Containable 行为一次获取所有数据,而不是为每个关系触发单独的查询。