Bonjour à tous,

J'ai un problème avec le tuto, j'ai beau le suivre je n'arrive pas à avoir plus d'un niveau :

    $this->loadModel('Commentaire'); 
    $comments = $this->Categorie->find(array( 
        'ordre' => array( 
            'id_commentaire' => 'ASC' 
        ) 
    ));

    $comments_by_id = [];
    foreach($comments as $comment){
        $comments_by_id[$comment['id_commentaire']] = $comment; 
    }

    foreach($comments as $k => $comment){ 
        if($comment['parent_id'] != '0'){
            $comments_by_id[$comment['parent_id']]['children'][] = $comment;
            unset($comments[$k]); 
        } 
    }

    var_dump($comments_by_id); 
    die();

Voici ma base

INSERT INTO `commentaire` (`id_commentaire`, `message`, `parent_id`) VALUES 
(1, 'Comm 1', 0), 
(2, 'Comm', 0), 
(3, 'SComm de 1', 1), 
(4, 'SComm de 1', 1), 
(5, 'SSComm 1 1.1', 3);

Vous avez des idées car je suis perdu ?

Merci d'avance

2 réponses


BaBeuloula
Auteur
Réponse acceptée

Non le problème venait juste du fait que je sors les commentaires en FETCH_ARRAY et non en FETCH_OBJ

Bonsoir.
Il te manque un champ, qui si je ne me trompe pas, se nomme depth, permettant de désigner la profondeur du commentaire.
Car dans l'affichage des commentaires, il y a cette partie de code :

<?php if($comment->depth <= 1): ?>