所以我写了一个标记注释的标记功能,我正在检查我的控制器,看看用户是否已经标记了特定的注释。问题是,我认为这可以在模型中完成。
功能是:
private function userAlreadyFlagged($userId, $commentId) {
$userAlreadyFlagged = $this->CommentsFlag->find('count', array(
'conditions' => array('CommentsFlag.comment_id' => $commentId, 'CommentsFlag.user_id' => $userId)
));
if ($userAlreadyFlagged > 0) {
return true;
} else {
return false;
}
}
然后我在控制器中还有另一个功能,叫做flagComment
if (!$this->userAlreadyFlagged($userId, $commentId)) {
if ($this->CommentsFlag->save($this->request->data)) {
$message = array('response' => 'success');
}
} else {
$message = array('response' => 'alreadyFlagged');
}
我的CommentsFlag当前模型将我的users
表链接到它:
var $name = 'CommentsFlag';
var $belongsTo = array(
'User' => array(
'className' => 'User'
)
);
所以我想知道从现在开始我如何在模型中开始做这样的事情,因为我有很多这样的代码更适合模型。
拥有肥胖模型是一种很好的做法。在将上述函数移动到模型中时,您面临什么问题?
将这些函数复制到您的模型中(CommentsFlag),并用$this->find(
替换所有$this->CommentsFlag->find(...
因此,要从您的模型调用上述函数,您可以使用:
如果从CommentsFlag的控制器调用$this->CommentsFlag->userAlreadyFlagged()
或如果从用户控制器调用$this->User->CommentsFlag->userAlreadyFlagged()
。