cakephp线程注释

cakephp线程注释,cakephp,Cakephp,我对cakephp有点陌生,我想知道为什么我会有这种问题 基本上,我正在用cakephp做一个线程注释。但我的问题是,每次我试图对一条“评论”进行“评论”,它的显示方式就不同了 以下是一个屏幕截图: 我希望它被颠倒,就像所有的子评论都应该发布在最后一行一样。当前,当我添加新注释时,它显示在顶部而不是底部。我希望它变成facebook如何评论他们 以下是我的代码: $comments = $this->UserDiscussionComment->find('threaded', a

我对cakephp有点陌生,我想知道为什么我会有这种问题

基本上,我正在用cakephp做一个线程注释。但我的问题是,每次我试图对一条“评论”进行“评论”,它的显示方式就不同了

以下是一个屏幕截图:

我希望它被颠倒,就像所有的子评论都应该发布在最后一行一样。当前,当我添加新注释时,它显示在顶部而不是底部。我希望它变成facebook如何评论他们

以下是我的代码:

$comments = $this->UserDiscussionComment->find('threaded', array('conditions' => array('UserDiscussionComment.user_discussion_id' => $slug), 'order' => array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')));
下面是数据库中的一个示例记录:

我想更改子注释的顺序。我试过“ASC”和“DESC”,但不起作用

提前谢谢

array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')
我认为错误就在那里

由于UserDiscussionComment.id都是不同的,因此对于
UserDiscussionComment.created ASC
,没有什么可订购的

尝试:


您将无法根据的文档以不同的顺序对子项进行排序。我要做的是在您的find调用之后,简单地反转数组:

$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']);
}
然后,当我想进行查找时,我可以对父注释和子注释进行不同的排序(注意,我使用的是
Containable
行为):


数组('UserDiscussionComment.id DESC','UserDiscussionComment.created ASC')顺便说一句,多线程标记不适合这个问题。您好,谢谢您的回答。但在我应用了你的建议之后,它仍然向我显示了错误的结果:(数组('UserDiscussionComment.parent\u id DESC','UserDiscussionComment.created DESC'是什么?)do?它正确显示子注释,但主注释被反转。父注释从最早显示到最新,这应该是另一种方式…我真的需要您的帮助。提前感谢Then do array('UserDiscussionComment.parent_id ASC','UserDiscussionComment.created DESC')如果你想要其他订单。DESC提供从最早到最新的日期。你好,霍夫!你的解决方案很好!我现在可以对所有内容进行排序。谢谢!@comebal你好,如果有n个回复,如用户A评论和用户B回复,以及用户C回复用户B回复这样的回复。你能给我任何解决方案或建议吗
$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']);
}
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'
        )
    );
}
$comments = $this->Comment->find('all', array(
    'order' => 'Comment.id DESC',
    'contain' => array(
        'ChildComment' => array(
            'order' => 'ChildComment.id ASC'
        )
    )
));