gpt4 book ai didi

mysql - Esqueleto 位于实体 ID 上

转载 作者:行者123 更新时间:2023-11-29 21:39:17 24 4
gpt4 key购买 nike

我一直在遵循 Yesod 的 SQL Joins 中的示例,并且我想向 Inner Join 示例添加一个 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
)

最佳答案

多亏了这个gist,我找到了答案

这是完整的示例:

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
)

关于mysql - Esqueleto 位于实体 ID 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34666528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com