用户评论内容可以用一个 edge 关系。RELATE user:dufu->comment->post:1 ,在 user:dufu 跟 post:1 之间建立一个 comment 关系,然后用 CONTENT 设置一下具体的内容,添加一个 id 属性,手工设置一下这条数据记录的 id,comment:1 ,然后再添加一个 content 属性,对应的值就是评论的具体内容。
SELECT * FROM comment,显示这里有一条数据项目。里面记录了一下用户的 id,内容的 id ,还有一个 content 属性,属性的值就是评论的内容。
回复
再回复一下这条评论,回复的时候,我们可以在用户跟内容之间建立一个 comment 关系,然后在这个关系里用 comment 属性记录一下回复的评论的 id。
RELATE user:libai->comment->post:1 ,再用 CONTENT 设置一下具体的内容,把 id 设置成 comment:2,再用 content 设置一下具体的评论内容。然后再添加一个 comment 属性,记录一下回复的评论的 id,这里就是 comment:1。
内容的评论数量
现在 post:1 这个内容有两条评论,查询内容的时候可以在结果里包含内容相关的评论的数量。
SELECT id, title FROM post; 在 SELECT 后面加上一个评论数量字段。用一下 count,起个名字叫 totalComments。 count 的东西,可以用一下 <-comment<-user。也就是用户评论内容这个关系。
现在结果里面会包含一个 totalComments ,它的值就是这个内容相关的评论的数量 。
内容评论列表
查询某个内容的评论列表,用一下 SELECT * FROM comment; 用 WHERE 设置一下条件,out 等于 post:1 AND comment = null。 如果 comment 等于 null,说明这是一条直接的评论,如果是评论的回复,comment 字段会记录一下被回复的那个评论的 id。
设置一下选择的字段,一个 id,然后 in AS user,再加上 content。然后再 count 一下评论的回复数量,起个名字叫 totalReplies。在 count 里用一条子查询,SELECT * FROM comment WHERE comment 等于 $parent.comment。
现在这个评论项目里会有一个 totalReplies 属性,它的值就是这个评论的回复数量。