使用Golang的gorm库构建自定义查询。

huangapple go评论79阅读模式
英文:

Build custom query with gorm Golang lib

问题

我正在使用http://jinzhu.me/gorm/crud.html#query。

我想根据一些自定义条件构建selectQuery。

selectQuery := db.Select("username").Where("status = 'active'")
selectQuery.Limit(10)
if err := selectQuery.Find(&users).Error; err != nil {
//
} else {
//
}

为什么限制(Limit)没有生效?

如果使用下面的代码实现,它是有效的:

if err := db.Select("username").Where("status = 'active'").Limit(10).Find(&users).Error; err != nil {
//
} else {
//
}
英文:

I'm using http://jinzhu.me/gorm/crud.html#query

I want to build selectQuery base on some custom conditions

selectQuery := db.Select("username").Where("status = 'active'")
selectQuery.Limit(10)
if err := selectQuery.Find(&users).Error; err != nil {
//
} else {
//
}

Why limit is not applied?

It’s working if implemented with below code:

if err := db.Select("username").Where("status = 'active").Limit(10).Find(&users).Error; err != nil {
//
} else {
//
}

答案1

得分: 1

为什么限制没有生效?

因为你忽略了Limit的返回值。实际上,你创建了一个带有限制的查询,然后将其丢弃而没有执行它。

你需要使用:

selectQuery = selectQuery.Limit(10)
英文:

> Why limit is not applied?

Because you're ignoring the return value of Limit. In effect, you're creating a query with a limit, then throwing it away without ever executing it.

You need to use:

selectQuery = selectQuery.Limit(10)

huangapple
  • 本文由 发表于 2017年4月3日 04:10:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/43173042.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定