gormでNOTの中でOR/AND条件を書くとpqエラーが出るが動くっぽい
ざっくり以下の様な感じのコードを書くと
func main() { db := Database()// return *gorm.DB foo := Foo{} db.Not("a = ? AND b = ?", 'foo', 'bar').Debug().First(&foo) }
なんかエラーが出てるっぽいけど実行されるっぽい。 psqlでデバッグで出ているSQL文を直接たたくと結果は返ってくる。
[2016-07-01 00:03:48] pq: syntax error at or near ")" [2016-07-01 00:03:48] [5.44ms] SELECT * FROM "foos" WHERE "foos".deleted_at IS NULL AND (NOT (a = 'foo' AND b = 'bar')) ORDER BY "foos"."id" ASC LIMIT 1
ちなみに以下のような感じにANDとかを抜かして条件を1つにすると特にエラーは出ない
db.Not("a = ?", 'foo').Debug().First(&foo)
気持ち悪いので時間があるときに調べたいということでメモ