如何将Slick结果映射到不同的数据结构?

时间:2016-08-15 16:39:44

标签: scala playframework slick

我刚刚开始使用Slick,我做了一个简单的hello world项目,其中包含帖子和评论。

我希望拥有以下数据结构:

Seq[(Post, Option[Seq[Comment]])]

然后我可以像这样迭代评论:

 @for(p <- posts) {
       @for(c <- posts.comments)  {
           @comment.title 
       }
 }

这是我的查询:

 def allWithComments = {


    val q = for {
      (p, c) <- Posts join Comments on (_.id === _.postsId)
    } yield (p,c) // do here something fancy and map the result 



    db.run(q.result)

  }

查询现在返回以下结构:

Seq[(models.Post, models.Comment)]

1 个答案:

答案 0 :(得分:0)

Seq[(models.Post, models.Comment)]Seq[(Post, Option[Seq[Comment]])]您可以使用以下内容:

(qResult groupBy (_._1) map { case (k,v) => (k, Option((v map (_._2)).toSeq)) }).toSeq