在mySQL数据库中使用GoRM时,我很难从一个相当简单的查询返回数据。
var newPrsPk struct {
presentation_pk int `gorm:"column:presentation_pk"`
}
db.Raw("select max(presentation_pk) as presentation_pk from presentation").Scan(&newPrsPk)
log.Println(newPrsPk)
log.Println(newPrsPk.presentation_pk)
这导致以下输出:
[2023-06-16 09:53:27] [43.29ms] select max(presentation_pk) as presentation_pk from presentation
[1 rows affected or returned ]
2023/06/16 09:53:27 {0}
2023/06/16 09:53:27 0
但是0绝对不是该列的最大值,在mySQL工作台中运行查询将返回适当的值,因此我必须假设我编写此代码的方式有问题。
GoRM的文档并不令人惊讶,但这是一个非常简单的查询,所以我很困惑。
“presentation_pk”是我的表中的一个自动递增的int字段,这个查询紧跟在GoRM Create()函数之后(因为似乎没有办法从mySQL返回一个自动递增的字段)。由于我看不到任何类型的显式“提交”函数,我假设GoRM会自动提交更改,并且这不是并发问题。
任何帮助将不胜感激。
1条答案
按热度按时间ldioqlga1#
当使用Gorm时,你的结构变量需要是PascalCase而不是snake case。看看document here的约定,然后你就可以了解Declaring Models here了。
如果你把你的结构体改成这样:
然后,您的查询应该可以工作,然后您可以使用
PresentationPK
打印出结果