[Gorm]Where 句の書き方メモ

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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です