【发布时间】:2021-01-29 23:12:40
【问题描述】:
select
*,
(select count(1) from variants as v where v.product_id = p.id) as variants
from
products as p
;
查询给出了我想要的结果,所以我现在只需要能够从 Slick 上做同样的事情。我有 Product 和 Variant 模型与相应的 Products 和 Variants 表和 products 和 variants TableQuerys 设置。
这就是我最终的结果:
products.map(product =>
(product, variants.filter(_.productId === product.id).length)
) map (_ <> (ProductAndVariantCount.tupled, ProductAndVariantCount.unapply))
【问题讨论】:
-
您始终可以使用原始 SQL 插值器:scala-slick.org/doc/3.0.0/sql.html#result-sets。一旦你的用例变得比 CRUD 单个实体更复杂,原始 SQL 就会变得更容易处理。
标签: sql postgresql scala subquery slick