2012-10-15 48 views
0

我有帖子和評論,用戶也可以「喜歡」。我正在使用cakePHP。從小孩(屬於)更新父模型

的帖子和評論表的每個對他們有「喜歡」行,因爲我不希望每個崗位/評論加載時間重新計算的喜歡。我也有一個Like表,它包含ID(發帖ID,用戶ID),以便我知道用戶已經'喜歡'什麼。

我不知道我怎麼會設置在CakePHP的模型中這種關係,以及如何我會在同一時間,當增加一個新的像到喜歡錶更新Posts.likes場。

我已經設置了喜歡在造型與目前以「belongsTo關係」的文章和評論,我LikesController.php看起來是這樣的:

public function add(){ 
... 
    if ($this->Like->save($this->request->data)) { 
     //like is added to Likes table, now how to add to the "parent" Post or Comment?? 
    } 
... 
} 
+0

[計數器緩存(http://book.cakephp.org/1.3/view/1033/counterCache-Cache-your-count)應該做的正是你需要開箱什麼。 – Ross

+0

謝謝@Ross,但是我會如何實現這一點?我會保留喜歡錶嗎?我需要知道用戶'喜歡'的內容.. – Tim

+0

是的,你需要保持桌子。在最基本的意義上說,countercache通過在每次向「model」添加或刪除記錄時更新'model_count'來工作。 – Ross

回答

2

保持你的表,因爲他們,但增加一個like_count字段到您的postscomments表。

還添加comment_countposts表。

然後,只需使用CakePHP的counterCache,它會自動跟蹤的喜好和每個帖子的評論的#的。

+0

感謝@dave,所以添加一個新的會自動更新帖子上的行?以及我喜歡的數據包含哪些數據? – Tim

+1

添加一個新的Like將更新帖子的'like_count'字段。添加新評論將更新帖子的'comment_count'字段。完全取決於你保存在「喜歡」表中的數據。如果您詢問最佳實踐或尋找表格結構的建議,最好在新問題中提出。 – Dave

+0

(刪除相同或評論也將更新這些字段,所以 - 基本上只要你使用CakePHP添加或刪除項目,它會自動保持計數你) – Dave