gpt4 book ai didi

go - 如何在函数中修改 GORM DB 指针?

转载 作者:IT王子 更新时间:2023-10-29 02:32:17 25 4
gpt4 key购买 nike

我有一个用 Go 编写的 REST API 应用程序,它使用 GORM 作为 ORM。在某些部分的重构过程中,我想将一些常用操作移动到一个外部函数ApplyToDBQuery(query *gorm.DB),它接受一个指向数据库查询的指针并对其进行修改,以便修改后的查询以后可以用。

示例用法:

query = shared.DB.Debug()
req.ApplytoDBQuery(query)
if query.find(&data).Error != nil {...}

func (this *MyCustomRequest) ApplyToDBQuery(query *gorm.DB) {
query.Limit(...)
query.Offset(...)
query.Where(...)
}

我想,因为我传递了一个指向函数的指针,所以应该修改原始查询,但原始查询实际上没有发生任何事情。

我也试过传递一个指向指针ApplyToDBQuery(query **gorm.DB)的指针,返回修改后的指针ApplyToDBQuery(query *gorm.DB) *gorm.DB 并且出于缺乏想法,甚至是这两者的组合 - ApplyToDBQuery(query **gorm.DB) *gorm.DB

最佳答案

Gorm 对象为每个操作克隆自身,因此原始指向的值永远不会改变。

你应该返回最新版本的 gorm.DB:

return query.Limit(...).Offset(...).Where(...)

关于go - 如何在函数中修改 GORM DB 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com