Commentaires imbriqués

Par BaBeuloula, il y a 10 ans


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

Lartak, il y a 10 ans

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): ?>
BaBeuloula, il y a 10 ans

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