Как я могу выполнить фильтрацию и присоединиться к запросу Slick Scala? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть таблица провайдера (providerId, active,….) И таблица рецензирования (reviewKey, providerId,…).Обратите внимание, что providerId является своего рода внешним ключом здесь.Мне нужно получить отзывы активных поставщиков.Итак, я объединяю эти две таблицы и выполняю фильтрацию на основе флага «активный». Может ли кто-нибудь помочь мне определить правильный синтаксис?Благодарю.Вот что я попробовал:

  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
  }

1 Ответ

0 голосов
/ 14 сентября 2018

Если вам нужны обзоры только для активных провайдеров, вам нужно внутреннее объединение, а не левый.Не проверял, но запрос должен выглядеть следующим образом:

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

dbRun {
    joinQuery.result
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...