我有一个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
}
如果您只需要对活动提供商进行评论,则需要内部联接,而不是左侧。没有测试但查询应如下所示:
val joinQuery = for {
(review, provider) <- rTable join ptable.filter(_.active) on (_.providerId === _.providerId)
} yield (reviews)
dbRun {
joinQuery.result
}