我基本上是在尝试编写一个简单的线程评论系统,用户可以在其中评论其他用户的评论。它只允许一级评论。
数据库中的评论表类似于: - id - 文本 - 时间戳 - parent_id(可以为 NULL)
我的问题是我应该如何查询评论和他们的孩子(评论)?我只是不确定它们将如何放置在数组中,然后如何正确循环和输出它们。
非常感谢您的帮助 =)
我基本上是在尝试编写一个简单的线程评论系统,用户可以在其中评论其他用户的评论。它只允许一级评论。
数据库中的评论表类似于: - id - 文本 - 时间戳 - parent_id(可以为 NULL)
我的问题是我应该如何查询评论和他们的孩子(评论)?我只是不确定它们将如何放置在数组中,然后如何正确循环和输出它们。
非常感谢您的帮助 =)
如果它只有一层深度,您可以获得所有评论并将它们整合到您想要的结构中。你可以做这样的事情:
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);
}
这是有关如何处理此问题的相当详细的说明:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/