给定一个用户,我试图选择与该用户所在的组织相关的事件列表。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 的返回返回 a[[OrgId]]
而不是[OrgId]
,并且 concat 在这里不起作用
我要解决这个问题了吗?我应该rawQuery
在这种情况下使用吗?