【发布时间】:2014-09-01 00:54:52
【问题描述】:
我想显示网页中的项目列表,以及来自单独表格(具有多对一关系)的相关详细信息。我如何在 Yesod 中做到这一点?我正在使用默认的脚手架。结果是runDB 不能嵌套在WidgetT 上下文中——至少我是这么认为的。
为了更具体,我如何定义函数 featuresAssociatedWith 以在以下 hamlet 代码中使用:
<h2> Cars
$forall Entity carId car <- carList
<div class="car-item">
<h3> #{carYear car} #{carMake car} #{carModel car}
<ul>
$forall feature <- featuresAssociatedWith carId
<li> #{feature}
鉴于以下模型:
Car
make Text
model Text
year Int
CarFeature
car CarId
text Text
UniqueCF car text
这是当前的处理函数
getCarListR :: Handler Html
getCarListR = do
carList <- runDB $ selectList [] [Asc CarOrder]
liftIO $ print $ length carList
defaultLayout $ do
setTitle "Cars"
$(widgetFile "carList")
以这种方式在小部件中嵌入runDB 查询似乎是最自然的,但同样,这是不可能的:
featuresAssocWith :: CarId -> [Entity CarFeature]
featuresAssocWith carID = selectList [CarFeatureCar ==. carID] []
【问题讨论】:
标签: haskell yesod persistent hamlet