2011-08-09 63 views
0

所以我有很多不同的模型類型。評論,帖子,評論等。我想將它們加入一個集成的Feed。是否有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()。檢查您正在查找的數據,如果找到,請將其放入緩存。它可能會很混亂,但至少它在一個地方,並不會影響性能。

0

肯定有沒有辦法自動將數據合併,但不是射擊單獨的查詢每個關係,你可以抓住它全部使用CakePHP的Containable行爲。