ちょい前に簡単なSQLをstructにbindしたり、
IN句を使ったりしたやつは書いたんですが、
joinした時とか、structがstructを持ってる場合、
dbタグをどうやってbindするんだろうと思ったら、
友人が記事見つけてくれたので試してみました。
最終的にはSQLのエイリアス (AS ...) のほうで .
でつなげれば良いみたいでした。
SQLをこんな感じにhoge.foo
をエイリアスとして利用して、
SELECT h.id AS "hoge.id", h.foo AS "hoge.foo", f.id AS id, f.bar AS bar FROM fuga AS f JOIN hoge AS h ON f.hoge_id = h.id
Fuga structにbindしようとすると Fuga.Hoge.Foo
にその値がbindされるようでした。
type Hoge struct { ID int `db:"id"` Foo string `db:"foo"` } type Fuga struct { ID int `db:"id"` Hoge Hoge `db:"hoge"` Bar string `db:"bar"` }
検証に使ったコードはこんな感じでした。
join周りもいい感じにbindしてくれて便利。
参考
こちらもおすすめ