首页 文章

cakephp线程评论

提问于
浏览
0

我对cakephp有点新意,我想知道为什么我会遇到这种问题 .

基本上,我在cakephp做一个线程评论 . 但我的问题是,每当我试图“评论”“评论”时,它就会以不同的方式显示 .

这是截图:
enter image description here

我希望它被颠倒过来,就像所有的孩子评论应该在最后一行发布一样 . 目前,当我添加新评论时,它会显示在顶部而不是底部 . 我希望它变得像facebook的评论一样 .

这是我的代码:

$comments = $this->UserDiscussionComment->find('threaded', array('conditions' => array('UserDiscussionComment.user_discussion_id' => $slug), 'order' => array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')));

以下是数据库中的示例记录:

enter image description here

我想改变孩子评论的顺序 . 我试过“ASC”和“DESC”,但它不起作用 .

提前致谢 .

2 回答

  • 2

    根据find('threaded')的文档,您将无法按照其他顺序订购子项 . 我要做的是在你的查找电话之后,简单地反转数组:

    $comments = $this->UserDiscussionComment->find('threaded', array(
        'conditions' => array('UserDiscussionComment.user_discussion_id' => $slug),
        'order' => array('UserDiscussionComment.id DESC')
    ));
    
    for ($i = 0; $i < sizeof($comments); $i++) {
        $comments[$i]['children'] = array_reverse($comments[$i]['children']);
    }
    

    未经测试但它应该做的伎俩(我也假设您只能像屏幕截图所示那样评论1级深度) .


    Edit

    我想分享一种我过去用来做同样事情的不同方法 . 基本上我将 Comment 模型设置为:

    class Comment extends AppModel {
    
        public $belongsTo = array(
            'ParentComment' => array(
                'className' => 'Comment',
                'foreignKey' => 'parent_id'
            ),
            'User'
        );
    
        public $hasMany = array(
            'ChildComment' => array(
                'className' => 'Comment',
                'foreignKey' => 'parent_id'
            )
        );
    }
    

    然后,当我想要查找时,我可以不同地命名父级和子级注释(请注意,我使用的是 Containable 行为):

    $comments = $this->Comment->find('all', array(
        'order' => 'Comment.id DESC',
        'contain' => array(
            'ChildComment' => array(
                'order' => 'ChildComment.id ASC'
            )
        )
    ));
    
  • 0
    array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')
    

    我认为错误就在那里 .

    由于UserDiscussionComment.id都是不同的,因此 UserDiscussionComment.created ASC 无需订购 .

    尝试:

    array('UserDiscussionComment.parent_id DESC', 'UserDiscussionComment.created ASC')
    

相关问题