0

我基本上是在尝试编写一个简单的线程评论系统,用户可以在其中评论其他用户的评论。它只允许一级评论。

数据库中的评论表类似于: - id - 文本 - 时间戳 - parent_id(可以为 NULL)

我的问题是我应该如何查询评论和他们的孩子(评论)?我只是不确定它们将如何放置在数组中,然后如何正确循环和输出它们。

非常感谢您的帮助 =)

4

2 回答 2

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);
}
于 2010-12-10T17:42:21.080 回答
1

这是有关如何处理此问题的相当详细的说明:

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

于 2010-12-10T16:08:20.303 回答