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))