评论在cakePHP中有子评论

时间:2011-08-27 04:19:06

标签: php cakephp cakephp-1.3

我正在为我的学校创建一个论坛。学生将能够在特定论坛中创建许多主题,其他学生可以对其进行评论。棘手的部分是我有一个功能,学生可以对评论进行子评论。 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->评论 - >用户

我如何以检索所有评论和子评论的方式实施?请帮助和建议我。谢谢!我正在看树的行为,但我不确定我怎么想加入我的上述查找声明。

1 个答案:

答案 0 :(得分:2)

你确实可以在CakePHP中使用TreeBehaviour。为此,您需要在lft之外的数据库中添加另外两个字段(rghtparent_id),并在模型中将其激活以供评论。

有关详细信息,请参阅CakePHP手册,但在激活行为后,您可以使用Model :: children()和Model :: find('threaded')等函数来查找位于某个注释下方的所有注释(例如,是小组评论)。

我通常首先在数据库中查询所有主题,然后使用Model :: children()函数对注释和子注释的Comment模型进行排队。我不知道,为什么你要加载这些主题中的所有主题和所有评论,而不仅仅是一个带评论的主题?