我基本上试图编写一个简单的线程评论系统,用户可以在其中评论其他用户的评论。它只允许一个级别的评论。
数据库中的注释表类似于: - ID - 文字 - 时间戳 - parent_id(可以为NULL)
我的问题是如何查询评论及其子女(评论)?我只是不确定它们在阵列中的位置,然后如何正确地循环和输出它们。
非常感谢您的帮助=)
答案 0 :(得分:2)
如果只有一个级别,你可以获得所有评论并将它们融入你想要的结构中。你可以这样做:
function get_comments()
{
$sql = 'select * from comments order by timestamp';
$result = $this->db->query($sql)->result();
$comments = array();
foreach ($result as $row)
{
if ($row->parent_id)
{
$comments[$row->parent_id]->children[] = $row;
}
else
{
$comments[$row->id] = $row;
$comments[$row->id]->children = array();
}
}
return array_values($comments);
}
答案 1 :(得分:1)
以下是关于如何处理此问题的相当详细的解释:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/