Go 言語
で GORM
という ORM
ライブラリを使用したときに条件分岐させながら Where
句を追加していく実装方法を調べてみました。
Where 句でメソッドチェーンを使う方法
db := gorm.DB{}
db.Where("name = ?", "検索条件1").Where("address = ?", "検索条件2").Find(&users)
通常であればこのように Where
句をメソッドチェーンで繋いでいくと Where
句の条件を AND
条件で連結してくれる。
条件分岐しながら Where 句を追加していく方法
検索画面などのフォームから検索条件が送られる場合、名前の部分には入力があるが、住所は未入力といったケースが考えられる。そいういった場合は、送られてきた名前や住所などに値が入力されているか確認した上で Where
句を追加していく必要がある。
db := gorm.DB{}
query := db.Where("")
if name != "" {
query = query.Where("name LIKE ?", "%"+name+"%")
}
if address != "" {
query = query.Where("address LIKE ?", "%"+address+"%")
}
db.Find(&users)
上記のように実装することで、フォームから送信されてきたパラメータに値が入力されている場合のみ Where
句を追加することができるようになる。
最後に
検索画面など、フォームに値が入力されるかどうかわからないケースはよくあると思います。そういった場合は今回の実装方法のように条件分岐させながら Where
句を追加することで対応できそうですね。
コメント