gpt4 book ai didi

pointers - 可选择将 .Where() 应用于 gorm.DB

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:27 24 4
gpt4 key购买 nike

我是 Go 的新手,我的指针知识已经生锈了。我想改变 gorm.DB 的一个实例,以便我可以对其应用 0 个或多个 Where 子句。

func () {
db := gorm.Open(/* ... */)
err := applyWhere(db, filters).Order("created_datetime desc").Find(&rMessages).Error
// ...
}

func applyWhere(db *gorm.DB, filters Filters) *gorm.DB {
if filters.MessageType != "" {
db = db.Where(&message{MessageType: string(filters.MessageType)})
}
return db
}

这似乎行不通。数据库实例没有应用位置。

* 编辑 3 *

现在可以了。不确定之前是什么问题。请关闭/删除此问题。

最佳答案

在这里阅读如何正确地与 GORM 链接:Method Chaining tutorial .您采用一种方法返回的 *gorm.DB 并对其应用另一种方法,仅此而已。您也可以传递 *gorm.DB,但要小心只传递指针,而不是取消引用它(否则您会遇到锁定复制错误)。

Order 只是您可以链接的另一种查询:http://gorm.io/docs/query.html#Order

例如:

var p Product
db.Order("Price").Where("Price > 1000").First(&p)

所以你的applyWhere应该只返回你可以进一步查询的*gorm.DB

关于pointers - 可选择将 .Where() 应用于 gorm.DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923332/

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