首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Esqueleto在实体ID上的位置

Esqueleto在实体ID上的位置
EN

Stack Overflow用户
提问于 2016-01-07 22:39:54
回答 1查看 256关注 0票数 0

我一直在遵循Yesod的SQL连接中的示例,我想在内部联接示例中添加一个where_子句--它应该只显示作者ID高于1的博客。

我认为我的错误可能是我正在做E.val 1,但不确定如何传递它它期望得到的Key

代码语言:javascript
复制
getHomeR :: Handler Html
getHomeR = do
    blogs <- runDB
           $ E.select
           $ E.from $ \(blog `E.InnerJoin` author) -> do
                E.on $ blog ^. BlogAuthor E.==. author ^. AuthorId
                E.where_ $ author ^. AuthorId E.>. (E.val 1) -- how to pass ID 1
                E.limit 5
                return
                    ( blog   ^. BlogId
                    , blog   ^. BlogTitle
                    , author ^. AuthorName
                    )
EN

回答 1

Stack Overflow用户

发布于 2016-01-08 06:14:59

多亏了这个要旨,我找到了答案

以下是完整的示例:

代码语言:javascript
复制
import Database.Persist.Sql (toSqlKey)
import qualified Database.Esqueleto      as E
import           Database.Esqueleto      ((^.))

getHomeR :: Handler TypedContent
getHomeR = do
    let authorID = toSqlKey 1 :: AuthorId -- cast 1 to the expected key
    let blogsSrc =
             E.selectSource
           $ E.from $ \(blog `E.InnerJoin` author) -> do
                E.on $ blog ^. BlogAuthor E.==. author ^. AuthorId
                E.where_ $ author ^. AuthorId E.>. E.val authorID
                return
                    ( blog   ^. BlogId
                    , blog   ^. BlogTitle
                    , author ^. AuthorName
                    )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34666528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档