2013-03-16 69 views
0

我仍然在使用CakePHP進行開發,但是我遇到了輕微的障礙。CakePHP:修改相關表的條目

問題:基本上我有評論的職位。我想要做的是在其索引頁面頂部顯示最近更新的帖子(因此,當新帖子添加到帖子時,如果它是最新的,則將其推到頂部)。

我想通過在Post表中添加一個名爲「updated」的時間戳來完成此任務。然後,無論何時添加新評論,帖子的更新字段都會被修改。然後在索引上,我根據更新的時間戳顯示帖子。

這是最好的方法嗎?如果是這樣,我將如何從Comment控制器修改Posts表中的條目?或者我會以評論的視角來做到這一點?

回答

0

您可以使用評價模型的afterSave回調更新時間戳。

但我認爲最好的方法是從控制器使用$ this - > [model] - > saveAssociated()方法。 通過在您的評論提交中具有以下結構,您可以從您的評論控制器呼叫 $this->Comment->saveAssociated($params);

//we know the Post.id 
    $params => array(
     [Comment] => array(
        'comment'=>'comment text', 
        'commented_by'=>'comment owner_id', 
        ), 
     [Post] => array(
        'id'=>1, 
        'commented_on'=>date('Y-m-d H:i:s') 
       ) 
    ) 
1

如果您的SQL表中有名爲「created」和「modified」的列,CakePHP將自動處理保存數據時的時間戳。然後,您可以在最近修改的控制器和視圖中對結果進行排序。

class PostsController extends AppController { 
    public function index() { 
     $posts = $this->Post->find('all', array(
      //Use ASC or DESC for ordering 
      'order' => array('modified' => 'DESC') 
     )); 
     $this->set('posts', $posts); 
    } 
} 

試一下你的控制器中的代碼,然後你可以使用debug($ posts);無論是在控制器中還是在您的視圖中查看結果。無論如何,這些文檔都有關於如何做這些事情的大量信息。

CakePHP - Retrieving Your Data