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
句を追加することで対応できそうですね。
コメント