在光滑的情况下,我们可以使用
query.filter( m => (m.state === state1 && m.status === status1) || (m.state === state2 && m.status == status2))
对于where子句中的“OR”条件。但是,我的要求是我在列表中具有“OR”条件(用户将其作为URL的一部分传递)。条件列表包括状态和状态的元组,例如
List[(state1, status1),(state2, status2),(state3, status3)]
因此,我想要的是能够构建||。过滤器中的语句,这样我就可以使用列表中的每个条件来生成查询,但是我不确定如何实现。或者如果有类似的东西
query.applyOrFilters.orFilter(condition1).orFilter(condition2)
实际上将对查询对象执行condition1或condition2。
到目前为止,是否可以使用Slick或进行理解?
最佳答案
在玩转它时,我终于找到了一种方法:-
query.filter {
m => conditions.map(n => m._13 === n._1 && m._14 === n._2).reduceLeft(_ || _)
}
其中
conditions
的形式为List[(String,String)]
,m._13
映射到状态,m._14
映射到状态。希望这会帮助某人尝试同样的事情。