我对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”,但它没有用。
提前致谢。
答案 0 :(得分: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级深度)。
修改强>
我想分享一种我过去用过的不同方法,用于你想要完成的同样的事情。基本上我将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'
)
);
}
然后,当我想做一个发现时,我可以订购父母&amp;孩子的评论不同(注意我使用Containable
行为):
$comments = $this->Comment->find('all', array(
'order' => 'Comment.id DESC',
'contain' => array(
'ChildComment' => array(
'order' => 'ChildComment.id ASC'
)
)
));
答案 1 :(得分:0)
array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')
我认为错误存在。
由于UserDiscussionComment.id都是截然不同的,因此UserDiscussionComment.created ASC
无需订购。
尝试:
array('UserDiscussionComment.parent_id DESC', 'UserDiscussionComment.created ASC')