Haskell Yesod 如何控制 Persistent 将如何访问 DB 列
Posted
技术标签:
【中文标题】Haskell Yesod 如何控制 Persistent 将如何访问 DB 列【英文标题】:Haskell Yesod how to controll how Persistent will access the DB columns 【发布时间】:2016-02-19 16:21:17 【问题描述】:我有一个已经相当大的数据库,我需要按照它们在那里的写入方式访问表和列(camelCase)。我可以更改以下代码以访问camelCase,或者至少可以为每个表和列定义我的数据库中的字符串吗?
share [mkPersist sqlSettings, mkMigrate "migrateAll"]
$(persistFileWith lowerCaseSettings "config/models")
另一件事:我不想做任何迁移,我只想做 CRUD
示例
型号:
MyTest
firstName Text
表:
create table MyTest (
id int unsigned AUTO_INCREMENT,
firstName varchar (255) not null,
primary key(id)
)
另一件事:如果我有一个名为 myColumn2 的列并且我希望它是定义中的 myColumn 怎么办?在与 DB 对话时如何定义要使用的自定义名称?
【问题讨论】:
您能否展示一些您的表格定义和models
文件?我很难弄清楚你在这里问什么
正如 Carsten 所说,如果没有模型文件,将很难为您提供帮助。如果您不想进行迁移,只需删除 runMigration migrateAll
代码即可。
有一个很好的tutorial 说明如何做到这一点(重新映射列名) - 你基本上写myColumn int sql=myColumn2
【参考方案1】:
查看文档中的此页面:https://hackage.haskell.org/package/persistent-2.2.2/docs/Database-Persist-Quasi.html
可以设置名为 psToDBName 的字段以提供您正在寻找的行为。我现在正在打电话,但稍后我会在回到电脑前尝试举个例子。
【讨论】:
以上是关于Haskell Yesod 如何控制 Persistent 将如何访问 DB 列的主要内容,如果未能解决你的问题,请参考以下文章
Haskell,Yesod和Keter - 我如何定期(每5分钟)运行一次例行程序?
“类型变量不明确”在 Haskell Yesod 中使用 Persistent