gpt4 book ai didi

scala - 如何使用 Scala Slick 2.0 在 .where() 子句中生成 OR 查询?

转载 作者:行者123 更新时间:2023-12-02 06:33:53 24 4
gpt4 key购买 nike

我想在 Slick 查询的 where 方法中添加两个子句。我有以下代码:

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)

我想在过滤后的用户中获取属于 assigneeowner 的操作。我希望代码是这样的:

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)

如何使用 Scala Slick 2.0 在 .where() 中生成这样的 OR 查询?

最佳答案

有几件事,首先要在 中使用,您的查询必须返回一些东西,而不是

val filteredUsers = users.where(.....)

应该是(取自 this answer ):

val filteredUsers = users.filter(/* condition */).map(_.id)

假设你想匹配 id,那么你可以简单地使用匿名函数来组合条件:

val ownerOrAssigneeAct = 
acts.filter(act => act.domain === 10 && (act.owner in filteredUsers || act.assignee in filteredUsers))

请注意,我没有使用 where,因为它已被弃用,请改用 filter

关于scala - 如何使用 Scala Slick 2.0 在 .where() 子句中生成 OR 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com