Используя PHP / SQL, как мне хранить и получать комментарии, расположенные друг над другом? - PullRequest
3 голосов
/ 08 октября 2011

Представьте себе следующее sutation:

Comment ID 1
|
|--- Comment ID 2 (reply to ID 1)
     |
     |--- Comment ID 3 (reply to ID 2)
     |
     |--- Comment ID 4 (reply to ID 2)
          |
          |--- Comment ID 5 (reply to ID 4)

(пример в действии)

Как сохранить вышеперечисленное в SQL, чтобы я мог получить и вывести его списокпозже?

Я относительно хорош в PHP / SQL, но эта ситуация рекурсивно убивает мою голову.Есть идеи?

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Похоже, что это все о моделировании данных, а не php или mysql.

Вы можете представить это в древовидной структуре.Просто подумайте, что для комментария нужен родитель.Каждый комментарий, один родитель.Однако первый элемент в дереве (корневой элемент) не будет иметь родителя)

Таким образом, для моделирования этого в ООП вы должны использовать класс Comment, который сам будет ассоциирован, а имя этого отношения будетбыть is_child_of.Один из них будет иметь нулевое значение.Если вы хотите продвинуться дальше в этом решении, проверьте Составной шаблон ;)

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

Поскольку у комментариев есть порядок, (в вашем примере это не будет то же самое, что поменять местами комментарии 3 и 4), вам следуетИмейте в виду, что вам придется каким-то образом сортировать их (идентификатор, если это инкрементное значение или дата / время).

Надеюсь, это поможет:)

1 голос
/ 08 октября 2011

Вы можете хранить свои данные как вложенный набор .Это очень распространенный способ представления древовидных данных в таблице SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...