How to generate OR queries in .where() clause using Scala Slick 2.0?
playframework, playframework-2.2, scala, slick
Solution
There are a couple of things, first to use `in` your query must return something, instead of
val filteredUsers = users.where(.....)
Should be (taken from this answer):
val filteredUsers = users.filter(/* condition */).map(_.id)
Assumed that you want to match on ids, then you can compose conditions simply using an anonymous function:
val ownerOrAssigneeAct =
acts.filter(act => act.domain === 10 && (act.owner in filteredUsers || act.assignee in filteredUsers))
Note that I'm not using `where` since it's deprecated, use `filter` instead.
Problem
I want to add two clauses in `where` method of Slick query. I have fllowing code: ``` val users = TableQuery[Users] val actions = TableQuery[Acts] val filteredUsers = users.where(.....) // Some condition val acts = actions.where(_.domain === 10) val ownerAct = acts.where(_.owner in filteredUsers) val assigneeAct = acts.where(_.assignee in filteredUsers) ``` I want to fetch actions which belong to either of `assignee` or `ownerer` in filtered users. I want code to be something like this: ``` val users = TableQuery[Users] val actions = TableQuery[Acts] val filteredUsers = users.where(.....) // Some condition val acts = actions.where(_.domain === 10) val ownerOrAssigneeAct = acts.where(_.owner in filteredUsers). or(_.assignee in filteredUsers) ``` How can I generate such an OR query in .where() using Scala Slick 2.0?