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).
我有以下持久模型
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).