0

私は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」を試しましたが、動作しません。

前もって感謝します。

4

2 に答える 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レベルの深さしかコメントできないと思います)。


編集

あなたが達成しようとしているのと同じことに対して、私が過去に使用した別のアプローチを共有したいと思いました. 基本的に、私は自分の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'
        )
    )
));
于 2012-08-02T20:43:35.063 に答える
0
array('UserDiscussionComment.id DESC', 'UserDiscussionComment.created ASC')

エラーがあると思います。

UserDiscussionComment.idはすべて別個のものであるため、注文するものはありませんUserDiscussionComment.created ASC

試す:

array('UserDiscussionComment.parent_id DESC', 'UserDiscussionComment.created ASC')
于 2012-08-02T08:29:37.667 に答える