【发布时间】:2018-01-09 02:22:09
【问题描述】:
我正在创建一个微博系统。像 Twitter 一样,我想用“(1) Like Count”和“(2) 用户是否已经喜欢它?”来检索帖子数据。
我的数据库架构:
帖子(id:Int,标题:String)
最喜欢的(id: Int, post_id: Int, user_id: Int)
我可以在 SQL 中得到我想要的(假设用户的 id 是 1)。
SELECT post.id, post.title, COUNT(favorite.id), COUNT(favorite.user_id = 1 OR NULL) FROM post
LEFT JOIN favorite ON post.id = favorite.post_id
GROUP BY post.id
但是对于 Slick 3,我不知道如何在 (2) 上获得相同的结果。
Post.joinLeft(Fav).on(_.id === _.postId)
.groupBy(_._1)
.map { case (post, group) => (
post,
group.map(_._2.map(_.id)).countDefined, // (1) this works!
group.map(_._2.???).countDefined // (2) ?
)}
如何查询?
更新: Fav 列的 Slick Schema(我使用了 slick-codegen)
val id: Rep[Int] = column[Int]("id", O.AutoInc, O.PrimaryKey)
val userId: Rep[Int] = column[Int]("user_id")
val postId: Rep[Int] = column[Int]("post_id")
【问题讨论】:
-
Favourite的精巧架构是什么? -
感谢您的评论。我已经更新了我的帖子。我从中提取了列定义(我认为这是您想知道的),但是如果您愿意,我可以粘贴 Fav 的所有架构。