可选择将.Where()应用于gorm.DB
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可选择将.Where()应用于gorm.DB相关的知识,希望对你有一定的参考价值。
我是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
}
这似乎不起作用。 db实例没有应用的位置。
*编辑3 *
这现在有效。不确定之前的问题是什么。请关闭/删除此问题。
答案
请阅读以下有关如何正确链接GORM的信息:Method Chaining tutorial。你拿一个方法返回的*gorm.DB
并对它应用另一种方法,就是这样。你也可以传递*gorm.DB
,但要小心只传递指针,而不是取消引用它(否则你得到你发现的锁定拷贝错误)。
Order
s只是你可以链接的另一种查询:http://gorm.io/docs/query.html#Order
例如:
var p Product
db.Order("Price").Where("Price > 1000").First(&p)
所以你的applyWhere
应该只返回*gorm.DB
,你可以进一步查询
以上是关于可选择将.Where()应用于gorm.DB的主要内容,如果未能解决你的问题,请参考以下文章