前面我们用 RELATE 在用户与内容之间建立了一种图形关系,描述了一下用户点赞了某个内容。下面可以利用一下这个图形关系。
SELECT * FROM user; 得到的是一组用户列表,现在我想在结果里包含用户赞过的内容,在 SELECT 后面,用一下图形关系,->like->post。因为现在查询的是 user,所以第一个箭头左边的东西应该就是当前这个 user。用 AS 起个名字叫 likedPosts。
在查询的结果里面,会有一个 likedPosts,它是一个数组,里面的东西就是当前这个用户赞过的内容的 id。
如果希望包含具体的点赞内容数据,可以在查询里 FETCH 一下 likedPosts,如果需要内容的 user 具体数据,再 FETCH 的字段里面,再添加一个 likedPosts.user 。
内容点赞数量
写一条获取内容列表的查询,在结果里包含内容项目被赞的次数。SELECT * FROM post,在 SELECT 后面 count 一下内容的点赞情况。给这个字段起个名字叫 totalLikes。在 count 函数里,描述一下需要的关系,因为现在选择的是 post 内容,所以箭头方向要朝左,然后是 like,再用一个朝左的箭头,然后是 user。
得到结果里面会有一个 totalLikes ,字段的值就是内容被赞的次数。
用户点赞的内容列表
下面再写一条查询可以获取到某个用户赞过的内容。 SELECT * FROM post; 在这段 sql 里用 WHERE 设置一个条件。一个左箭头,然后是 like ,再用一个左箭头,一组括号,里面是 user,再用 WHERE 设置一个条件,条件是用户的 id 等于一个特定的 id,比如 user:libai。
现在得到的响应数据就是李白这个用户赞过的内容列表。