我在Yesod应用程序中定义了以下模型:
CvCategory
title Text
order Int
UniqueCvCategory title
CvItem
category CvCategoryId
title Text
fromYear Int
toYear Int Maybe
description Text Maybe
UniqueCvItem title
我在处理程序中有以下查询:
cvcategories <- selectList [] [] --all cv categories
在我的哈姆雷特模板中,我想做类似的事情:
<ul>
$forall cvcategory <- cvcategories
<li>$#{cvCategoryTitle cvcategory}
$forall cvitem <- cvcategory --how?
<li>#{cvItemTitle cvitem}
在Django中,您可以轻松定义一个related_name
,然后使用它轻松访问所有“子对象”。在耶索德也可能吗?怎么样?
答案 0 :(得分:2)
更改查询,类似
do
cvcategories <- selectList [] [] --all cv categories
forM cvcategories $ \cat -> do -- for each category
cvitems <- selectList [CvCategoryId .== entityKey cat] -- all items belonging to it
return (cat, cvitems) -- return tuple of category and its items
然后你的哈姆雷特看起来就像
<ul>
$forall (cvcategory, cvitems) <- cvcategories
<li>$#{cvCategoryTitle cvcategory}
$forall cvitem <- items
<li>#{cvItemTitle cvitem}