miyazi888の覚え書き日記

学習したことを書き留めてます。

entで条件抽出に直接クエリを記述する

ExprP()を使うことで実現可能だった。 これでDBに用意されている関数などを使用することもできる。

具体的例は以下のとおり。 この例ではitemテーブルのnameが5桁以上の文字列のものだけを抽出する。

items, err := r.ent().Item.Query().
        Where(func(s *sql.Selector) {
            s.Where(sql.ExprP("CHAR_LENGTH(name) >= ?", 5))
        }).
        All(ctx)

参考

entgo.io