Haskell Persistent:可以按包含指定值的字段选择所有行
Posted
技术标签:
【中文标题】Haskell Persistent:可以按包含指定值的字段选择所有行【英文标题】:Haskell Persistent: Is possible to select all rows by field that contains specified value 【发布时间】:2015-01-23 20:13:53 【问题描述】:我有以下持久模型
Tag
name String
description String
UniqueName name
Post
caption String
text String
created UTCTime
tags [TagId]
deriving Show
是否可以在字段tags
中选择包含指定TagId
的所有帖子?或者我需要创建新模型来处理多对多关系?
PS 对不起我的英语不好
【问题讨论】:
【参考方案1】:不,因为类似列表的列不是 SQL 的一部分。
实际上,您的 tags
列在 SQLite 中定义为 "tags" VARCHAR NOT NULL
。
如果您想在 Post
上运行任何类型的重要查询,如您所说,我强烈建议您重新设计架构。
从Post
中删除tags
并添加下表应该允许您获取特定标签的所有帖子。
TagPost
tagId TagId
postId PostId
UniqueTagPost tagId postId
λ> tagPosts <- selectList [TagPostTagId ==. yourTagId] []
您可能还想看看Esqueleto,它将允许您编写类型安全的连接(persistent
默认不提供的东西,因为它必须与 MongoDB 保持兼容)。
【讨论】:
以上是关于Haskell Persistent:可以按包含指定值的字段选择所有行的主要内容,如果未能解决你的问题,请参考以下文章
Haskell Persistent Library - 如何从我的数据库中获取数据到我的前端?
使用 Persistent Haskell 来自现有数据库的外键
“类型变量不明确”在 Haskell Yesod 中使用 Persistent