如何在浮油中进行“OR”过滤

时间:2014-11-08 10:05:03

标签: scala playframework-2.0 slick slick-2.0

在光滑中我们可以使用

query.filter( m => (m.state === state1 && m.status === status1) || (m.state === state2 && m.status == status2)) 

对于" OR" where子句中的条件。不过我的要求是我有"或"列表中的条件(由用户作为URL的一部分传递)。条件列表包括状态和状态元组,如

List[(state1, status1),(state2, status2),(state3, status3)]

所以我想要的是能够构建||过滤器内部的语句,以便我可以使用列表中的每个条件来生成查询,但我不知道如何实现。或者如果有类似

的话
query.applyOrFilters.orFilter(condition1).orFilter(condition2) 

实际上会对查询对象执行condition1 OR condition2。 现在可以使用Slick还是用于理解?

1 个答案:

答案 0 :(得分:12)

在玩弄它时,我终于找到了一种方法: -

query.filter {
  m => conditions.map(n => m._13 === n._1 && m._14 === n._2).reduceLeft(_ || _)
}

其中conditions的格式为List[(String,String)]m._13映射到州,m._14映射到状态。

希望这有助于某些人尝试同样的事情。