查询行中的最大值在GoRM中返回“0”

z4iuyo4d  于 2023-06-19  发布在  Go
关注(0)|答案(1)|浏览(155)

在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会自动提交更改,并且这不是并发问题。
任何帮助将不胜感激。

ldioqlga

ldioqlga1#

当使用Gorm时,你的结构变量需要是PascalCase而不是snake case。看看document here的约定,然后你就可以了解Declaring Models here了。
如果你把你的结构体改成这样:

var result struct {
    PresentationPK int `gorm:"column:presentation_pk"`
}

然后,您的查询应该可以工作,然后您可以使用PresentationPK打印出结果

相关问题