Лучший способ для комментария родительского вложения?

1

Каков наилучший способ иметь секцию рекурсивных комментариев, где комментарии структурированы так:

top level comment (parent:0, id:1)  
    reply comment (parent: 1, id: 2)  
        reply reply comment (parent: 2, id: 5)  
    reply comment (parent: 1, id: 4)  
top level comment (parent:0, id:3)  
top level comment (parent:0, id: 6)

У меня уже есть метод для ответа на существующий комментарий, но мне нужен способ перебирать каждую строку в базе данных для создания структуры выше.

  • 0
    может быть, вы можете реализовать все в одной таблице. если у вас есть одна таблица, вам просто нужно установить parent_id в 0 для комментариев верхнего уровня и идентификатор комментария или родительского ответа для остальных ответов ... просматривая parent_ids, вы получите ту структуру, которая вам нужна .. ,
  • 0
    Рю, как бы ты создал эту структуру, просто взглянув на родителей, я не верю, что это возможно?
Показать ещё 1 комментарий
Теги:

1 ответ

1

Таким образом, вы сохраняете свои данные комментариев в реляционной базе данных, где каждый комментарий имеет родительский идентификатор, а самый простой способ - рекурсия. Вы можете сделать рекурсивную функцию в PHP для запроса базы данных, которая несет много накладных расходов, или вы можете написать рекурсивную процедуру в своей базе данных, которая будет длинным запросом в базе данных.

Вы также можете перестроить свои данные в структуру "вложенного набора" (хорошая запись здесь: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/), а затем вы можете получить данные без любая рекурсия. Однако вставки будут более дорогостоящими.

Другим решением является отказ от реляционной модели и использование базы данных документов, которая позволяет хранить произвольные иерархии без нескольких записей. Это возможно с использованием таких баз данных, как Postgresql, CouchDB или MongoDB.

Не зная, какую систему баз данных вы используете, невозможно дать вам идеальный рецепт. Надеюсь, этот ответ предоставит вам достаточно информации, чтобы разработать собственные эксперименты и найти решение, подходящее для вашей ситуации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню