Haskell 持久性:可以 select 包含指定值的字段的所有行

Haskell Persistent: Is possible to select all rows by field that contains specified value

我有以下持久模型

Tag
    name String
    description String
    UniqueName name

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

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

PS对不起我的英语不好

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

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

如果您想 运行 在您的 Post 上进行任何类型的重要查询,我强烈建议,如您所说,重新设计您的模式。

Post 中删除 tags 并添加以下内容 table 应该可以让您获得特定标签的所有帖子。

TagPost
    tagId TagId
    postId PostId
    UniqueTagPost tagId postId

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

您可能还想看看 Esqueleto,它将允许您编写类型安全的连接(persistent 默认不提供的东西,因为它必须与 MongoDB).