miyazi888の覚え書き日記

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

ent

entでgroup byで集約した結果のcountでorder byする方法

タイトルどおり。 select count(*) as cnt from items group by type order by cnt desc みたいにgroup byして指定した項目毎に件数で並び替えたい、というケースがある場合、entではどうやったら記述できるのか調べた。 本当にこれが正解なのかはわからなか…

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

ExprP()を使うことで実現可能だった。 これでDBに用意されている関数などを使用することもできる。 具体的例は以下のとおり。 この例ではitemテーブルのnameが5桁以上の文字列のものだけを抽出する。 items, err := r.ent().Item.Query(). Where(func(s *sql…

entでクエリを確認する方法

entでクエリを確認がわからなかったのでメモ。 全てのクエリを出力したい場合 optionsで指定する clientを作成する時にoptionsにDebugを指定することで実現可能 func NewDBClient() *ent.Client { user := "user" password := "pass" port := "5432" host :=…

entのmixinを使ってスキーマ共通の項目を設定する

Mixin スキーマ共通の項目を定義して各スキーマで適用することが可能。 ここでは以下の記事で作成したUserテーブルに作成日時(created_at)と更新日時(updated_at)を追加する例を示す。 entを試してみた - miyazi888の覚え書き日記 共通項目の定義 ent/mixin/…

entを試してみた その2(関連テーブル追加とJOIN)

前回のブログでentの基本的なCRUDの使い方がなんとなくわかったので今回は関連テーブルがある場合についてを検証したブログとなる。 前回 https://miyazi888.hatenablog.com/entry/2023/05/05/114518 関連テーブルを追加 ent new Comment スキーマ変更 この…