CakePHP 哲学问题

问题描述 投票:0回答:3

所以我有很多不同的模型类型。评论、帖子、评论等。我想将它们加入到一个综合提要中。是否有 CakePHP 风格来合并所有这些数据以进行显示,并按时间戳排序?

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

php cakephp
3个回答
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() 。检查您要查找的数据,如果找到,请将其放入缓存中。它可能会很乱,但至少在一个地方,并且不会对性能产生太大影响。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.