mysql - 如何在 Scala 中解开 Slick 的 Rep 对象?
问题描述
我第一次使用Slick作为Scala和MySQL的 FRM 工具。
但是,在编写具有多个连接的查询时,我意识到我无法进一步访问一些中间对象以基于它进行过滤。
即这里的rep1,它的类型是Rep[Option[Manufacturer]]]
如何将此对象解包到制造商以便我可以访问它的列?
val query = product
.joinLeft(manufacturer).on { case (prod, man) => prod.manufacturerid == man.manufacturerid }
.joinLeft(category).on { case ((prod, rep1), cat) => prod.categoryid == cat.categoryid }
// .filter() after this using rep1
解决方案
您好 Pratik Shah,欢迎来到 Stackoverflow。
我发现将 a 中的任何内容Rep
视为在数据库中运行(作为 SQL 的一部分)很有用。考虑到这一点,您不会打开 a Rep
: 您在 Slick 查询中使用它(以及运行查询的结果,从某种意义上说是一种普通值)。
因此,如果您可以访问rep1
内部filter
,您可以使用 Slick 的运算符(例如,===
not ==
,note)将Option[Manufacturer]
值用作查询的一部分。如果不运行代码,我不能肯定地说,但它可能是这样的:
filter { case ((prod, rep1), cat) => rep1.map(_.manufacturerid) === 42 }
...或任何你想做的事rep1
推荐阅读
- javascript - 出现在 textarea 元素中但不在字符串中
- c# - 有一种方法可以将 Xamarin.Forms 中的滑块分组以一起更改值?
- html - CSS动画不会被延迟并在动画后重置
- curl - 使用 Suitescript 实现与带有表单数据的 CURL POST 相同
- objective-c - 我将如何在 Swift 中实现这个 Objective-C 行?
- c - SocketCAN 从套接字读取只返回 11cobid
- java - 关联类的 JsonInclude 注释
- .net - Restful API 在一个 HTTP 请求中发布文件和元数据
- android - 在调试器中启动应用程序时 Android 设备重置
- sql-server - 恢复一个 1.2GB 的 bak 文件,但数据库大小没有那么大