Создайте собственный запрос с помощью 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 {
//
}

Почему не применяется лимит?

Он работает, если реализован с помощью кода ниже:

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

person jwthanh    schedule 02.04.2017    source источник


Ответы (1)


Почему не применяется лимит?

Потому что вы игнорируете возвращаемое значение Limit. По сути, вы создаете запрос с ограничением, а затем отбрасываете его, даже не выполняя.

Вам нужно использовать:

selectQuery = selectQuery.Limit(10)
person Flimzy    schedule 02.04.2017
comment
Извините, я ошибся и по ошибке проголосовал против. Я не могу снять голосование, если он не отредактирован, поэтому в качестве оправдания я поддержал другой ваш ответ. - person zerkms; 02.04.2017
comment
Еще раз проверил функцию ограничения: // Limit specify the number of records to be retrieved func (s *DB) Limit(limit interface{}) *DB { return s.clone().search.Limit(limit).db }, так что это правильный ответ - person jwthanh; 02.04.2017