Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在slick中的左联接生成的可选表上进行筛选_Scala_Slick - Fatal编程技术网

Scala 如何在slick中的左联接生成的可选表上进行筛选

Scala 如何在slick中的左联接生成的可选表上进行筛选,scala,slick,Scala,Slick,我需要对scalaslick中的左连接生成的可选表的属性应用过滤器。我在网上找不到关于这个问题或任何类似问题的任何文档 考虑以下查询: val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id) 我想按第二个表的属性进行筛选: query.filter { case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value" }

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

考虑以下查询:

val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id)
我想按
第二个表的属性进行筛选

query.filter {
  case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value"
}
显然,这不会编译,因为
secondTableOpt
是一个
Rep[Option[SecondTable]]
。在
Rep
对象上似乎没有
.get
方法

应该有一种方法可以在
slick
中编写,有人知道如何实现这一点吗


谢谢你

因为你需要在你的
第二个表中过滤结果
在结果中,最好在左联接之前过滤。所以代码是这样的:

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

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

为什么不在加入之前过滤
SecondTable
?好吧,因为我以前根本没有想过过滤!可能就是这个了,非常感谢!我将把它作为一个答案来更好地解释它