Bonjour,
J'essaye d'afficher les enfants qui accompagne les commentaires.

J'ai fait une requête : find(‘threaded’); sur ma table comments

$comments = $this->Comment->find('threaded',array(
            'conditions' => array('Comment.ref'=>'User','Comment.ref_id'=>$user'User']'id']),
            'limit' => 5,
            'order' => 'Comment.id DESC',
            'fields' => array('Comment.id','Comment.username','Comment.ref','Comment.id','Comment.created','Comment.content','Comment.user_id','Comment.parent_id')
        ));

Quand je fait un debug($comments) ça me sort ceci :

array(
    (int) 0 => array(
        'Comment' => array(
            'id' => '4',
            'username' => 'MusicalityMaker',
            'ref' => 'User',
            'created' => '2014-02-15 20:46:45',
            'content' => 'Jai pas d'enfants',
            'user_id' => '1',
            'parent_id' => '0'
        ),
        'children' => array()
    ),
    (int) 1 => array(
        'Comment' => array(
            'id' => '1',
            'username' => 'MusicalityMaker',
            'ref' => 'User',
            'created' => '2014-02-15 20:22:43',
            'content' => 'Je suis un commentaire',
            'user_id' => '1',
            'parent_id' => '0'
        ),
        'children' => array(
            (int) 0 => array(
                'Comment' => array(
                    'id' => '3',
                    'username' => 'MusicalityMaker',
                    'ref' => 'User',
                    'created' => '2014-02-15 20:33:59',
                    'content' => 'Réponse 2',
                    'user_id' => '1',
                    'parent_id' => '1'
                ),
                'children' => array()
            ),
            (int) 1 => array(
                'Comment' => array(
                    'id' => '2',
                    'username' => 'MusicalityMaker',
                    'ref' => 'User',
                    'created' => '2014-02-15 20:23:10',
                    'content' => 'Je suis une réponse au commentaire',
                    'user_id' => '1',
                    'parent_id' => '1'
                ),
                'children' => array()
            )
        )
    )
)

Je fait un foreach classique ça me dit erreur :

Notice (8): Undefined index: children [APP/View/Users/profil.ctp, line 94]
Warning (2): Invalid argument supplied for foreach() [APP/View/Users/profil.ctp, line 94]

voici mon foreach qui est posé afficher les enfants des commentaire : 
<?php foreach($comments'children'] as $c): ?>
                        <?php endforeach; ?>

Merci de votre aide.

1 réponse


Pakito
Réponse acceptée

Je dirai qu'il faut d'abord boucler sur les commentaires puis ensuite boucler sur les enfants du même commentaire :

foreach($comments as $k => $v):
    echo($v'Comment']'content']);
    foreach($v'children'] as $kc => $vc):
       echo($vc'Comment']'content']);
    endforeach;
endforeach;

A tester, mais ça me semble bon.