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