我正在为我的学校创建一个论坛。学生将能够在特定论坛中创建许多主题,其他学生可以对其进行评论。棘手的部分是我有一个功能,学生可以对评论进行子评论。 Lemme告诉你我简单的表结构,我正在使用Mysql并在cakephp中进行开发。以下不是完整的结构。
用户(身份证,姓名)
论坛(ID,说明,日期)
主题(ID,USER_ID,forum_id,标题,内容,日期)
评论(id,user_id,topics_id,content,date,parent_id)* =>子命名所属的parent_id引用。*
我使用cakePHP包含来获取我的forum_controller中特定论坛的所有图片和评论:
$this->find('all',array(
'contain'=>array(
'User'=>array(
'fields' => array ('id','displayName','gender','email','profileImgBig')
),'Post'=>array(
'User'=>array(
'fields' => array('id','displayName','gender','email','profileImgBig')
),
'order' => array('Post.created'=>'DESC'),
)
),
'conditions'=>array('Topic.forum_id'=>$id),
'order' => array('Topic.datePosted'=>'DESC')
));
以上检索所有论坛 - >主题 - >用户& Topics->评论 - >用户
我如何以检索所有评论和子评论的方式实施?请帮助和建议我。谢谢!我正在看树的行为,但我不确定我怎么想加入我的上述查找声明。
答案 0 :(得分:2)
你确实可以在CakePHP中使用TreeBehaviour。为此,您需要在lft
之外的数据库中添加另外两个字段(rght
,parent_id
),并在模型中将其激活以供评论。
有关详细信息,请参阅CakePHP手册,但在激活行为后,您可以使用Model :: children()和Model :: find('threaded')等函数来查找位于某个注释下方的所有注释(例如,是小组评论)。
我通常首先在数据库中查询所有主题,然后使用Model :: children()函数对注释和子注释的Comment模型进行排队。我不知道,为什么你要加载这些主题中的所有主题和所有评论,而不仅仅是一个带评论的主题?