我有一个非常典型的评论模型,其中评论属于许多其他模型,例如文章、评论、照片等,而这些模型中的每一个都有很多评论。这是我在评论模型上建立关系的方式......
<?php
App::uses('AppModel', 'Model');
class Comment extends AppModel {
var $name = "Comment";
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Article' => array(
'className' => 'Article',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Photo' => array(
'className' => 'Photo',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Review' => array(
'className' => 'Review',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
这就像一个魅力,如果我正在查看一篇特定的文章,那么我可以从该文章中检索所有评论,并且它对其他模型的工作方式相同。我要做的是显示所有带有原始帖子标题的最新评论,无论原始帖子来自什么模型(文章,评论,照片等),格式为$comment['Original']['title']
. 我认为在 Comment 模型的 belongsto 中添加以下代码会起作用,但它不会....
'Original' => array(
'className' => 'Article',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 3),
'fields' => '',
'order' => ''
),
'Original' => array(
'className' => 'Review',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 2),
'fields' => '',
'order' => ''
),
'Original' => array(
'className' => 'Photo',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 8),
'fields' => '',
'order' => ''
),
不幸的是,如果最近的评论是在一张照片上,这只会显示正确的标题(Comment.module_id = 8)
。