我的问题是如何使用一个带有多个“属于”控制器的注释控制器.
我想在新闻,帖子和比赛中添加评论(这是一个网球网站).我有评论添加动作设置来使用’ajax’帮助器,我也使用counterCache来跟踪每个新闻,帖子和匹配的评论数量.
我不知道的是,如何将唯一ID(新闻,帖子,匹配)传入评论控制器添加操作,以便表单保存评论和news_id,post_id或match_id,
无论哪种形式通过.
我在想的是,如果表单设置为收集唯一ID,以便传递的内容特定于该控制器(新闻,帖子,匹配).结果是添加操作会添加注释以及新闻/帖子/匹配ID值.
否则我必须设置一个post_comments,news_comments和match_comments控制器来处理每个,这不会是我追求的DRY方法.
我仍在积累我对CakePHP的知识和理解.我怎样才能实现我的目标?
最佳答案 您的注释数据库表应如下所示:
id | belongs_to | foreign_id | ....
-------------------------------------
| | |
belongs_to是enum或varchar
然后在您的模型中,您可以将评论模型关联起来
在评论模型中:
var $belongsTo = array(
'News' => array(
'className' => 'News',
'foreignKey' => 'foreign_id',
'conditions' => array('Comment.belongs_to'=>'News'),
'fields' => '',
'order' => ''
),
'Post' => array(
'className' => 'Post',
'foreignKey' => 'foreign_id',
'conditions' => array('Comment.belongs_to'=>'Post'),
'fields' => '',
'order' => ''
)
);
在后模型中:
var $hasMany = array(
'Comment' => array(
'className' => 'Comment',
'foreignKey' => 'foreign_id',
'dependent' => true,
'conditions' => array('Comment.belongs_to' => 'Post'),
'fields' => '',
'order' => 'Comment.created DESC',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);