Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como construir comentários encadeados com 1 ou 2 consultas?


Se você precisar de apenas 2 níveis, aqui está uma maneira com uma consulta:

Sua mesa - id, parent_id, comment colunas

Código
$rows = mysql_query('
  select *
  FROM
    comments
  ORDER BY
    id DESC');

$threads = array();
foreach($rows as $row) {
  if($row['parent_id'] === '0') {
    $threads[$row['id']] = array(
      'comment' => $row['comment'],
      'replies' => array()
    );
  } else {
    $threads[$row['parent_id']]['replies'][] = $row['comment'];
  }
}

Em $threads você terá todos os seus tópicos principais e $threads[$id]['replies'] contém todas as respostas. Os tópicos são classificados - mais recente =primeiro, adicione alguma paginação e você está pronto para ir.