如何在Slick Scala查询中执行过滤和加入?

问题描述 投票:0回答:1

我有一个providerTable(providerId,active,...)和一个reviewTable(reviewKey,providerId,...)。请注意,providerId在这里是一种外键。我需要获取有效提供商的评论。所以我加入这两个表并根据标记'active'进行过滤,有人可以帮我找出正确的语法吗?谢谢。以下是我的尝试:

  val rTable = TableQuery[ReviewTable]
  val pTable = providerDao.table

  def findReviewForActiveProviders()(implicit ec: ExecutionContext): Future[Seq[Review]] = dbRun {
    rTable
      .joinLeft(pTable filter (_.active))
      .on(_.providerId === _.providerId)
      .result
  }
scala filter left-join slick slick-3.0
1个回答
0
投票

如果您只需要对活动提供商进行评论,则需要内部联接,而不是左侧。没有测试但查询应如下所示:

val joinQuery = for {
  (review, provider) <- rTable join ptable.filter(_.active) on (_.providerId === _.providerId)
} yield (reviews)

dbRun {
    joinQuery.result
}
© www.soinside.com 2019 - 2024. All rights reserved.