Haskell Persistent:可以按字段选择包含指定值的所有行

时间:2015-01-23 20:13:54

标签: haskell persistent

我有以下持久模型

Tag
    name String
    description String
    UniqueName name

Post
    caption String
    text    String
    created UTCTime
    tags    [TagId]
    deriving Show

是否可以在字段TagId中选择包含指定tags的所有帖子?或者我需要创建新模型来处理多对多关系?

PS抱歉我的英语不好

1 个答案:

答案 0 :(得分:2)

不,因为类似列表的列不是SQL的一部分。

实际上,您的tags列在SQLite中定义为"tags" VARCHAR NOT NULL

如果您想在Post上运行任何类型的非平凡查询,我强烈建议您重新设计架构。

tags删除Post并添加下表可让您获取特定标记的所有帖子。

TagPost
    tagId TagId
    postId PostId
    UniqueTagPost tagId postId

λ> tagPosts <- selectList [TagPostTagId ==. yourTagId] []

您可能还想查看Esqueleto,它将允许您编写类型安全连接(persistent默认情况下不提供的内容,因为它必须与MongoDB保持兼容)。< / p>