原因是这样子的:
现在有两个字段,年份(year),和学期(term)
beego的orm现在支持单独一个字段的过滤,例如2013年~2015年:
```
tmp := map[string]interface{}
o := orm.NewOrm()
qs := o.QueryTable("table").Filter("year__gte", 2013).Filter("year__lte", 2015).All(&tmp)
```
如上可以得到年份的区间。
可是我的需求是多个字段过滤,例如2013年2学期~2015年1学期
用sql语句可以表示为:
```
var sql string = "select * from table where year >= 2013 and year <= 2015 and not (year = 2013 and term = 1) and not (year = 2015 and term = 2);"
```
但是beego所提供的Exclude(expre, ...) 和*orm.Condition 都没有看到符合要求的办法,又不想直接用sql语句。求大神解答。
这个有看的,就是上面的*orm.Conditon,看了很久,不知道 not (year = 2013 and term = 1 ) 这句话怎么写。cond.AndNot(exper,...)里面只是一个参数。
#2
更多评论
已经解决了,今天下午被队友嘲讽了一下午。瞎逼了, !( expre1 and expre2) == !expre1 or !expre2, 然后就将两个条件转换为或运算,就可以用SetCond来完成了。
#3