Esqueleto 查询 returns 常数值

Esqueleto query that returns constant value

是否可以使用 esqueleto 创建一个 returns 为常量值的查询?例如 SELECT 1

试试这个:

import Database.Esqueleto

-- | We have to specialize `val` or else the type inferencer
-- will complain about the `Esqueleto` instance.
val_ :: Int -> SqlExpr (Value Int)
val_ = val

query :: SqlPersistT IO [Value Int]
query = select $ return (val_ 1)

@chi 的评论很接近,但 1 需要提升为 SqlExprval 是通用的,依赖于 Esqueleto class 实例。通常情况下,类型推断器会在您使用 from 并拉入 SQL table 后立即获取它,但由于其中的 none 在这里可用,我们必须手动专门化。

总体而言,这是一个很好的例子,说明类型classes 如何混淆含义并迫使人们求助于文档或论坛。