我一直在遵循Yesod的SQL连接中的示例,我想在内部联接示例中添加一个where_子句--它应该只显示作者ID高于1的博客。
我认为我的错误可能是我正在做E.val 1,但不确定如何传递它它期望得到的Key
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
)发布于 2016-01-08 06:14:59
多亏了这个要旨,我找到了答案
以下是完整的示例:
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
)https://stackoverflow.com/questions/34666528
复制相似问题