Я уже давно думаю об этом, мне нужен способ добавить ответы на комментарии в базе данных, но я не уверен, как это сделать.
Это моя таблица комментариев в данный момент (много не говорит, но ее начало):
CREATE TABLE IF NOT EXISTS `comments` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`comment` text,
`user_id` int(12) DEFAULT NULL,
`topic_id` int(12) NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `topic_id` (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
и вот мой текущий запрос:
SELECT c.id, c.comment, c.user_id, u.username, u.photo
FROM (comments c)
JOIN users u ON c.user_id = u.id
WHERE c.topic_id = 9
Один из вариантов заключается в создании новой таблицы с именем "comment_replies", но я не уверен. Если я могу выбрать все комментарии и комментарии в одном запросе, и если я добавлю новый столбец "ответ", Я не уверен, как сортировать их, чтобы получать каждый комментарий с каждым ответом.
Я хотел бы получить совет относительно того, как с этим бороться.
Edit:
Следуя приведенным ниже ответам о добавлении parent_comment_id, вы получите такой массив из 1 комментария и 2 ответа:
array(2) {
[0]=>
object(stdClass)#17 (7) {
["id"]=>
string(2) "26"
["comment"]=>
string(36) "adding a comment from the admin page"
["user_id"]=>
string(2) "16"
["ts"]=>
string(10) "1249869350"
["username"]=>
string(5) "Admin"
["photo"]=>
string(13) "gravatar2.png"
["reply"]=>
string(23) "There is no admin page!"
}
[1]=>
object(stdClass)#18 (7) {
["id"]=>
string(2) "26"
["comment"]=>
string(36) "adding a comment from the admin page"
["user_id"]=>
string(2) "16"
["ts"]=>
string(10) "1249869350"
["username"]=>
string(5) "Admin"
["photo"]=>
string(13) "gravatar2.png"
["reply"]=>
string(13) "Yes there is!"
}
}
Как мне обработать этот массив для работы с ним, возможно ли отделить комментарий от ответов?