我构建了一个查询,该查询连接了几个表并进一步限制了结果,除非一个名为IncludeAll
equals的字段True
。
我正在尝试这样写
fetch i = runDb . select . from $ \(a, b, c) -> do
where_ $
a ^. AId ==. valkey i
&&. b ^. BField1 ==. a ^. AField2
&&. c ^. CField1 ==. a ^. AField3
unless (unValue $ b ^. BIncludeAll) $
where_ $ b ^. BField2 == c ^. CField2
return b
但我收到以下错误
无法将预期类型与第一个参数中的
Bool
实际类型匹配Database.Esqueleto.Internal.Language.Value Bool
unless
所以unValue
不知何故不能解决问题。事实上,类似的东西b ^. BIncludeAll
有 type expr (Value a)
。
查看源代码中的定义对SqlExpr
我也没有帮助:
这是一个ADT:
data SqlExpr a where ...
PS:我使用 SQL 后端,但理想情况下这不重要,对吧?