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语言学习笔记(69)Yesod

“类型变量不明确”在 Haskell Yesod 中使用 Persistent

Haskell Yesod - 执行 POST 请求时浏览器 OPTIONS 请求的 CORS 问题

如何在 Yesod 中捕获异常而不杀死站点?

如何使用 Yesod 正确处理 JWT 的到期日期?