在评论列表里可以加上这个评论被回复的数量,用一个子查询可以统计出评论被回复数量。先去定义一个查询片断,打开 comment.provider ,在这个文件里定义的 sqlFragment 里面再添加一个查询片断,名字是 totalReplies,这个查询片断可以用一个子查询,放在一组括号里面,给查询结果起个名字叫 totalReplies 。
在子查询里面,用 SELECT 选择的东西是用 COUNT 统计一下 reply.id 的个数。在 FROM 的后面设置数据来源,这里就是 comment 数据表,这里得给它起个别名,叫 reply,在 WHERE 的后面设置查询条件,条件就是 reply 里的 parentId 等于 comment 数据表里的 id 。
打开 comment.service ,修改一下在这里定义的 getComments 函数,修改一下在这个函数里准备的这段查询,判断一个条件,如果过滤器的名字不等于 userReplied, 我们就加入 sqlFragment 里定义的 totalReplies 这个查询片断,它会在查询结果里添加一个 totalReplies 属性,属性的值就是评论被回复的次数。 注意这里在这个查询片断的前面要加上一个逗号分隔一下在前面选择的栏目。
回到 HTTP 客户端,打开 评论列表 请求,地址设置成 comments?user=3&action=published ,发送一下这个请求,现在,在列表的评论数据项目里面会出现这个 totalReplies 属性,它的值就是这个评论被回复的次数。
修改一下请求地址,把 user 查询符的值设置成 4 , 发送一下这个请求,得到的就是这个 id=4 的用户发表的评论列表。 显示这个用户 id=1 的这条评论,一共有三条回复。
这个 totalReplies 属性只会出现在用户发表的评论列表里,在用户回复的评论列表里,不会出现这个属性。