如何创建具有yesod-persistent的单列列表?

问题描述 投票:0回答:1

鉴于用户,我试图选择与该用户所在的组织相关的事件的列表。UserOrg表描述了哪些OrgId对应于给定的UserId。

我有这些表:

User
    email Text
    name Text
    UniqueUser email
    deriving Typeable
Event
    name Text
    description Text
    dateTime UTCTime
    userId UserId
    orgId OrgId
    deriving Show
Org
    name Text
    description Text
    deriving Show
UserOrg
    userId UserId
    orgId OrgId

当前我正在尝试:

getEventR :: Handler Html
getEventsR = do
    muser <- maybeAuth
    eventList <- runDB $ 
        case muser of
            Nothing -> []
            (Just euser) -> selectList [ EventOrgId <-. (userOrgIds $ entityKey euser) ] []
    defaultLayout $ do
        setTitle "Events"
        $(widgetFile "events")

userOrgIds :: UserId -> [OrgId]
userOrgIds userid = do
    rows <- liftHandler $ runDB $ selectList [ UserOrgUserId ==. userid ] []
    return $ [ userOrgOrgId $ entityVal $ erow | erow <- rows ]

但是我收到一个类型错误,说userOrgIds的返回返回一个[[OrgId]]而不是[OrgId],并且concat在这里不起作用

我要解决这个问题吗?在这种情况下,我应该只使用rawQuery吗?

给出一个用户,我试图选择一个与该用户所在的组织相关的事件的列表。UserOrg表描述了哪些OrgId对应于给定的UserId。我有这些...

haskell yesod haskell-persistent
1个回答
0
投票

这是一个好的开始,但是我发现很多错误。

© www.soinside.com 2019 - 2024. All rights reserved.