用于图像博客的PHP中的线程评论系统

时间:2016-12-06 08:00:23

标签: php mysql

我拥有一个图片博客(类似于9gag),我想建立一个线程评论系统。我明白要走的路是拥有一个闭包表,所以我建立一个。

我的问题是:按顺序获取注释树的SQL查询是什么(并避免对perf有影响的嵌套SELECT查询)?

评论表:

image_id
comment_id
comment_text
comment_date
comment_parent_id

Comments_tree表:

ancestor
descendant
depth
image_id

1 个答案:

答案 0 :(得分:1)

首先,我认为他的表没有正确规范化我认为你应该使用comment_id作为主键。

对于你的问题,问题不在于PHP打印树的难度。

您可以选择comment_parent_id为null的所有内容:

 app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', 'authService',
function ($stateProvider, $urlRouterProvider, $locationProvider, authService) {
 if (authService.auth == false) {
    $urlRouterProvider.otherwise(function ($injector, $location) {

        var $state = $injector.get("$state");
        $state.go("login");
    });
    }
else {
   $urlRouterProvider.otherwise(function ($injector, $location) {

        var $state = $injector.get("$state");
        $state.go("home");
    });

 }
}]);

我现在按名称排序,对于下一个查询,只需使用父评论的ID:

SELECT comment_text FROM comments_table WHERE comment_parent_id IS NULL ORDER BY comment_date DESC;

您可以使用PHP变量SELECT comment_text FROM comments_table WHERE comment_parent_id = $parentCommentId ORDER BY comment_date DESC; 来保存父评论的ID。

完成所有这些之后,你只需要正确输出它!