Скажем, в Yesod/Persistent у меня настроены модели следующим образом:
User
ident Text
password Text Maybe
UniqueUser ident
Question
title Text
asker UserId Eq
И у меня есть список Question, и я хотел бы получить соответствующий список User. Как мне это сделать?
Я думал о соединениях, но это один ко многим, а не один к одному (полагаю, это не имеет значения, но я бы хотел более простое решение). Выполнение соединения вручную также является вариантом, но я беспокоюсь о производительности - у меня есть
questions <- runDB $ selectList [QuestionTitle !=. ""] [LimitTo 10]
let askerIds = map (\(Entity _ q) -> questionAsker q) questions
askers <- sequence $ map (runDB . get) askerIds
let questionsAndAskers = zip questions askers
но я беспокоюсь об использовании runDB в map (не будет ли это делать отдельный запрос к базе данных для каждого пользователя?)
Есть ли лучший/более идиоматический способ добиться этого?
runDB, будет выполняться другой запрос к базе данных. - person Dan Burton   schedule 22.02.2012