如何过滤由 slick 中的左连接生成的可选 table

How to filter on an optional table produced by a left join in slick

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

考虑以下查询:

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

我想通过 SecondTable:

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

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

slick里面应该有这样写的,有谁知道怎么实现的吗?

谢谢

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

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

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