【问题标题】:Esqueleto query that returns constant value返回常量值的 Esqueleto 查询
【发布时间】:2016-07-20 02:26:47
【问题描述】:

是否可以使用esqueleto 创建一个返回常量值的查询?比如SELECT 1

【问题讨论】:

  • 试试select (return 1) -- 现在不能检查,但它可能会工作。
  • @chi:很遗憾没有:No instance for (Database.Esqueleto.Internal.Sql.SqlSelect Int r0)

标签: haskell esqueleto


【解决方案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 类实例。通常,只要您使用 from 并拉入 SQL 表,类型推断器就会抓住它,但由于这里没有可用的,我们必须手动专门化。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2015-03-05
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多