我有一个帖子模型(mysql表),结构类似于:
id, parent, user_id, title, desc, created, modified
单个会话主题包含一个帖子,后跟所有后续帖子,其中post.parent与原始post_id匹配。
user_32和user_40之间的示例对话:
110, 0, 32, thread_title, sample_description_here, created_time, modified_time
121, 110, 40, comment_title, sample_comment_here, created_time, modified_time
130, 110, 32, comment_title, sample_comment_here, created_time, modified_time
140, 110, 32, comment_title, sample_comment_here, created_time, modified_time
166, 110, 40, comment_title, sample_comment_here, created_time, modified_time
290, 110, 32, comment_title, sample_comment_here, created_time, modified_time
使用普通的PHP我只需执行外部查询,然后是内部查询,然后将对话回显到屏幕,但是如何使用CakePHP实现这一点?
问题:
如何在CakePHP中构造查询,以显示由(见上文)post_id_110组成的单个对话,然后是post.parent == 110的所有后续帖子,按created_time DESC排序。??
答案 0 :(得分:1)
在帖子模型中:
var $belongsTo = array(
'ParentPost' => array(
'className' => 'Post',
'foreignKey' => 'parent_id',
),
)
然后用作其他所有关联模型
btw - parent_id比父母更加蛋糕,并且使用支架
答案 1 :(得分:1)
在Post模型中:
var $hasMany = array( 'Children'=>array( 'className' => 'Post', 'foreignKey' => 'parent_id' ) );
(并在DB中将'parent'更改为'parent_id',只是一个约定)。然后在帖子控制器:
是的,是的,并且使用可包含的。你并不真的需要它,但它会使find()更清晰,后来肯定会有用。$this->Post->find('first',array( 'conditions'=>array(...), 'contain'=>array('Children') ));