Как сделать "или" фильтр в slick
в slick мы можем использовать
query.filter( m => (m.state === state1 && m.status === status1) || (m.state === state2 && m.status == status2))
для условия " или " в предложении where. Однако мое требование - у меня есть" или " условия в списке (переданном пользователем как часть URL). Список условий включает кортежи состояния и статуса, такие как
List[(state1, status1),(state2, status2),(state3, status3)]
Итак, я хотел либо иметь возможность построить оператор || внутри фильтра, чтобы я мог использовать каждое из условий из списка для создания запроса, но я не уверен, как этого достичь. Или если есть что-то как
query.applyOrFilters.orFilter(condition1).orFilter(condition2)
который фактически будет выполнять condition1 или condition2 для объекта запроса. Возможно ли это с помощью Slick или С для понимания на данный момент ?
1 ответов
играя с ним, я, наконец, нашел способ сделать это: -
query.filter {
m => conditions.map(n => m._13 === n._1 && m._14 === n._2).reduceLeft(_ || _)
}
здесь conditions
имеет форму List[(String,String)]
, m._13
карты в состояние и m._14
карты для статуса.
надеюсь, это поможет кому-то попробовать то же самое.