# #go-gorm
Вопрос:
Я ожидаю, что получу инструкцию SQL, подобную этой
where (cw.status = 'pending' AND c.status != 'notfinished' AND c.status != 'notexpired')
OR (cw.status = 'approved' AND now() < lower(c.ranges) AND c.status != 'notcancelledbyuser')
OR (cw.status = 'approved' AND now() <@ c.ranges" AND c.status != 'notcancelledbyuser')
func Pending(tx *gorm.DB) *gorm.DB {
return tx.Where("cw.status = ?", Pending).Scopes(NotFinished, NotExpired)
}
func Scheduled(tx *gorm.DB) *gorm.DB {
return tx.Where("cw.status = ? AND now() < lower(c.ranges)", Approved).Scopes(NotCancelledByUser)
}
func Running(tx *gorm.DB) *gorm.DB {
return tx.Where("cw.status = ? AND now() <@ c.ranges", Approved).Scopes(NotCancelledByUser)
}
func Filter(tx *gorm.DB) *gorm.DB {
return db.Scopes(Pending).Or(Scheduled).Or(Running)
}
К сожалению, я получаю нечто непредсказуемое.
Комментарии:
1. Я просто попробовал использовать различные комбинации областей и предложений where и не нашел никаких проблем. Не могли бы вы включить режим отладки
db.Debug()
и опубликовать сгенерированный выбор из gorm?