如何在浮动中过滤由左连接生成的可选表

时间:2016-04-26 11:53:32

标签: scala slick

我需要对scala slick中左连接生成的可选表的属性应用过滤器。我无法在网上找到关于此问题或任何类似问题的任何文档。

考虑以下问题:

val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id)

我想通过SecondTable

的属性进行过滤
query.filter {
  case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value"
}

显然这不会编译,因为secondTableOptRep[Option[SecondTable]].get对象上似乎没有Rep方法。

应该有办法在slick中写这个,有谁知道如何实现这个目标?

谢谢

1 个答案:

答案 0 :(得分:5)

由于您需要在结果中过滤SecondTable中的结果,因此最好在左连接之前执行此操作。所以代码将是这样的:

val filteredSecondTable = SecondTable.filter(_.attribute === "value")

val query = FirstTable joinLeft filteredSecondTable on (_.foreignId === _.id)