0
我有一個基本的帖子和評論cakephp應用程序。Cakephp根據評論數量計算帖子的排名
我想顯示一個表格,其中顯示按評論數量顯示帖子排名的列。
我希望通過郵寄的方式徵求總評論的百分比。
在cakephp中,我會這樣做嗎?我會在哪裏按職位劃分的評論數除以所有評論的總數?
我有一個基本的帖子和評論cakephp應用程序。Cakephp根據評論數量計算帖子的排名
我想顯示一個表格,其中顯示按評論數量顯示帖子排名的列。
我希望通過郵寄的方式徵求總評論的百分比。
在cakephp中,我會這樣做嗎?我會在哪裏按職位劃分的評論數除以所有評論的總數?
其中:你在模型中做它。那是good practice。
如何:我看到了兩個有效的方法(我的意思是,有噸的替代品,但這些都是最簡單的,不到處重複代碼)
使用Virtual Fields。在你的模型做這樣的事情
public $virtualFields = array(
'rank' => '/*query*/' //sql query that get's the number you want
);
這將添加一個字段(虛擬的,是不是在DB)該模型的你做一個發現每次()
在模型中創建自己的功能調用它,只要你想
public getRank($postID) {
$post = $this->find('first', array('conditions'=>array('id'=>$postID);
$rank = /*do the calculation you want*/
return $rank;
}
你打電話從像找到控制器,功能()或保存()或任何其他
$this->Post->getRank($id);
如果任何原因,你想擁有這個級別每次你調用一個帖子,然後在該職位的afterFind()方法,添加到函數的調用:
public afterFind(array $results, boolean $primary = false) {
parent::afterFind($results, $primary);
foreach ($results as $i=>$result) {
$results[$i]['rank'] = $this->getRank($result['id']);
}
return $results;
}
我沒有測試afterFind功能。所以改變它以適應您的需求。
感謝您的詳細資料。對於分離模型和控制器功能以及使模型「胖」和控制器「瘦」,我有模糊的概念感。到目前爲止,我所有的cakephp應用程序都有「胖」控制器和「瘦」模型。但是你的例子確實給了我更多關於什麼可以進入模型的想法。謝謝。 – curtisp 2013-05-04 21:01:40
它也發生在我身上。當我意識到我需要在任何地方重複相同的代碼時,我纔對「胖」模型有很好的理解。我想它與練習:) – Nunser 2013-05-06 13:03:08
我喜歡重複代碼的最小化(DRY =不要重複自己),這似乎是「胖」模型與「胖」控制器的真正目的。再次感謝! – curtisp 2013-05-08 01:32:50