Надеюсь, я правильно сформулировал.
У меня есть простая таблица данных (blog_comments):
1.id
2.post_id
3.комментарий
4.дата
5.addedby
6.comment_id (для ответов)
Моя идея всем известна.Я хочу отображать комментарии и ответы для каждого комментария, упорядоченные upvotes.
Я могу отображать комментарии, которые не являются ответами, но не удается отобразить ответы.
При этоммомент, этот код: не показывать даже простые комментарии.Если я удаляю reply.*
, он показывает простые комментарии.
public function getBlogCommentList($post_id){
try{
$sortby = "SELECT c.*, reply.*, u.id as user_id, u.username as username, u.image as profile_image,
SUM(CASE WHEN r.upvote=1 THEN 1 ELSE 0 END) as upvotes,
SUM(CASE WHEN r.downvote=1 THEN 1 ELSE 0 END) as downvotes
FROM cb_community.blog_comments c
LEFT JOIN cb_users.users u ON u.id = c.addedby
LEFT JOIN cb_community.blog_comment_ratings r ON r.comment_id = c.id
LEFT JOIN (SELECT rc.*, ru.id as user_id, ru.username as rusername, ru.image as rprofile_image,
SUM(CASE WHEN rr.upvote=1 THEN 1 ELSE 0 END) as rupvotes,
SUM(CASE WHEN rr.downvote=1 THEN 1 ELSE 0 END) as rdownvotes
FROM cb_community.blog_comments rc
LEFT JOIN cb_users.users ru ON ru.id = rc.addedby
LEFT JOIN cb_community.blog_comment_ratings rr ON rr.comment_id = rc.id
WHERE rc.post_id = $post_id AND rc.comment_id is not null GROUP BY rc.id ORDER BY rupvotes DESC) reply ON reply.comment_id = c.id
WHERE c.post_id = $post_id AND c.comment_id is null GROUP BY c.id ORDER BY upvotes DESC";
$stmt = $this->conn->prepare("$sortby");
$stmt->execute();
$result = $stmt->fetchAll();
$blog_comments = array();
foreach($result as $post){
$blog_comments[] = $post;
}
return $blog_comments;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
Редактирование только с blog_comments таблица:
$sortby = "SELECT c.*
FROM cb_community.blog_comments c
LEFT JOIN (SELECT rc.*
FROM cb_community.blog_comments rc
WHERE rc.post_id = $post_id AND rc.comment_id is not null GROUP BY rc.id) reply ON reply.comment_id = c.id
WHERE c.post_id = $post_id AND c.comment_id is null GROUP BY c.id";
Я не знаю, если ядаже на правильном потоке.Я хочу отобразить все комментарии и для каждого комментария отобразить все его ответы.