0
posts
、comments
およびvotes
のテーブルがあるとします。Ectoでは、集計クエリを事前にロード
votes
テーブルは、direction
カラムが1,0、-1のいずれかになります。
は、私はまた、すべての記事と数コメントの、および各ポストのためvotes.direction
の合計を照会します。
これは、Ectoのサブクエリとして実現可能ですか?Post
モデルで合成可能なクエリを使用するのが理想的ですか?
def count_comments(query) do
from p in query,
left_join: c in assoc(p, :comments),
select: {p, count(c.id)},
group_by: p.id
end
def get_score(query) do
from l in query,
left_join: v in assoc(p, :votes),
select: {p, sum(v.direction)},
group_by: p.id
end
しかし、私はこのエラーを取得するように私はこれらのクエリの両方を構成することができません:
現在、私が持っているものがある
(Ecto.Query.CompileError) only one select expression is allowed in query
これはうまくいくようです。別の質問の種類ですが、このクエリの関連モデルをプリロードする最も簡単な方法は何ですか。例えば。投稿にユーザーがいるとしたら、ユーザーが投稿に読み込まれるようにするにはどうすればよいですか? – harryg
'Ecto'は良い文書を持っていますbtw https://hexdocs.pm/ecto/search.html?q=preload – mudasobwa