如何将多个模型ID传递给CakePHP中的注释添加操作?

我的问题是如何使用一个带有多个“属于”控制器的注释控制器.

我想在新闻,帖子和比赛中添加评论(这是一个网球网站).我有评论添加动作设置来使用’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' => ''
  )
);
点赞