如何过滤由 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"
}
显然这不会编译,因为 secondTableOpt
是 Rep[Option[SecondTable]]
。 Rep
对象上似乎没有 .get
方法。
slick
里面应该有这样写的,有谁知道怎么实现的吗?
谢谢
由于您需要在结果中过滤 SecondTable
中的结果,因此最好在左连接之前进行。所以代码将是这样的:
val filteredSecondTable = SecondTable.filter(_.attribute === "value")
val query = FirstTable joinLeft filteredSecondTable on (_.foreignId === _.id)
我需要对由 scala slick
中的左连接生成的可选 table 的属性应用过滤器。我在网上找不到关于这个或任何类似问题的任何文档。
考虑以下查询:
val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id)
我想通过 SecondTable
:
query.filter {
case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value"
}
显然这不会编译,因为 secondTableOpt
是 Rep[Option[SecondTable]]
。 Rep
对象上似乎没有 .get
方法。
slick
里面应该有这样写的,有谁知道怎么实现的吗?
谢谢
由于您需要在结果中过滤 SecondTable
中的结果,因此最好在左连接之前进行。所以代码将是这样的:
val filteredSecondTable = SecondTable.filter(_.attribute === "value")
val query = FirstTable joinLeft filteredSecondTable on (_.foreignId === _.id)