IHP - 将两个表中的数据合并和排序到单个视图中的最佳方法?
IHP - Best way to combine and sort data from two tables into a single view?
我有两个表:
Table: Posts
Columns: id, title, body, author_id, created_at
Table: Comments
Columns: id, post_id, body, author_id, created_at
我有以下操作:
action MyAction:
posts <- query @Post |> fetch
comments <- query @Comment |> fetch
我想将所有帖子和评论一起获取,在单个视图中按 created_at 组合和排序。在 IHP 中最好的方法是什么?
编辑:查看 Marc 的回答:collectionFetchRelated
是这里的正确函数
a有很多这样的关系,apost的评论可以用fetchRelated #comments
查询。要为每个 post 执行此操作,我们可以按如下方式使用 mapM
。
postsWithComments <- query @Post
|> fetch
>>= mapM (fetchRelated #comments)
要按 created_at
排序,请对 QueryBuilder
使用 orderByDesc
函数。我们可以直接将其应用于顶级查询,然后使用 modify
.
修改内部 #comments
查询构建
postsWithComments <- query @Post
|> orderByDesc #createdAt
|> fetch
>>= mapM (fetchRelated #comments . modify #comments (orderByDesc #createdAt))
有关详细信息,请参阅 IHP "relationships" docs。
您可以使用 collectionFetchRelated
:
posts <-
query @Post
|> fetch
>>= pure . map (modify #comments (orderBy #createdAt))
>>= collectionFetchRelated #comments
我有两个表:
Table: Posts
Columns: id, title, body, author_id, created_at
Table: Comments
Columns: id, post_id, body, author_id, created_at
我有以下操作:
action MyAction:
posts <- query @Post |> fetch
comments <- query @Comment |> fetch
我想将所有帖子和评论一起获取,在单个视图中按 created_at 组合和排序。在 IHP 中最好的方法是什么?
编辑:查看 Marc 的回答:collectionFetchRelated
是这里的正确函数
a有很多这样的关系,apost的评论可以用fetchRelated #comments
查询。要为每个 post 执行此操作,我们可以按如下方式使用 mapM
。
postsWithComments <- query @Post
|> fetch
>>= mapM (fetchRelated #comments)
要按 created_at
排序,请对 QueryBuilder
使用 orderByDesc
函数。我们可以直接将其应用于顶级查询,然后使用 modify
.
#comments
查询构建
postsWithComments <- query @Post
|> orderByDesc #createdAt
|> fetch
>>= mapM (fetchRelated #comments . modify #comments (orderByDesc #createdAt))
有关详细信息,请参阅 IHP "relationships" docs。
您可以使用 collectionFetchRelated
:
posts <-
query @Post
|> fetch
>>= pure . map (modify #comments (orderBy #createdAt))
>>= collectionFetchRelated #comments