Пересчет количества коментариев в топике

Здравствуйте, вопрос в следующем:
Я многократно программно удаляю\добавляю комментарии к топику, но показатель «количество комментариев» только увеличивается. Должен ли я его также программно пересчитывать?

9 комментариев

avatar
Про программное удаление можно поподробнее? Если самостоятельно обращаетесь к БД то конечно нужно пересчитывать. А если используя API LiveStreet, то вроде нет.
$this->Comment_AddComment($oCommentNew);
$this->Comment_DeleteCommentByTargetId($iTopicId,'topic');
avatar
Ой, так вы все комментарии топика удалите :) Вот так наверное для конкретного комментария:
$this->Comment_DeleteCommentByTargetId($iCommentId,'comment');
avatar
Ну мне как бы и надо удалить все комментарии сразу, и использую именно LS API

$this->Comment_AddComment($oCommentNew);
$this->Comment_DeleteCommentByTargetId($iTopicId,'topic');
avatar
Точнее так:

			if(!$this->Comment_DeleteCommentByTargetId($oTopic->getId(),$oTopic->getType())) {
				return false;
			}
avatar
Наверное здесь всетаки баг? возможно г-н ort подскажет:
потому как в modules/comment/Comment.class.php в 481 строчке код:

if ($oComment->getTargetType()=='topic') {
  $this->Topic_increaseTopicCountComment($oComment->getTargetId());
}

но не вижу в соответствиия (decreaceTopicCount) и в одном DeleteTopicBy…
avatar
Походу в понятии Топик, нет вообще нет такого метода как decreaseTopicCountComment.
avatar
верно, т.к. в стандартном функционале нет удаления комментариев, соответственно их количество только увеличивается
avatar
вопрос в том, будете его добавлять, или мне реализовывать его самому?
avatar
Недавно столкнулся с подобной проблемой. Проект «переехал» с другой CMS.
Поэтому запросы в БД
Пересчет количества в топиках
UPDATE `PREFIX_topic` t  
           SET t.topic_count_comment = (
               SELECT count(c.comment_id)   FROM `PREFIX_comment` c
                    WHERE c.target_id = t.topic_id AND c.comment_publish = 1 
                              AND c.target_type = 'topic')

Пересчет количества в topic_read
UPDATE `PREFIX_topic_read` t  
           SET t.comment_count_last = (
                    SELECT count(c.comment_id)   FROM `PREFIX_comment` c
                    WHERE c.target_id = t.topic_id')
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.