アソシエーションのうちの1つ(アライブ)の集計を含むモデル(つまり、ポスト)のすべてを返すクエリを作成することは可能ですか?Ectoでの関連付けが1つであるモデルのクエリを実行できますか?
Repo.all(from p in Post,
join: l in Like,
where l.post_id == p.id,
group_by: p.id,
select: {p, count(l.id)
私はgroup_byを使用して(上記)を選択してみましたが、これは部分的にしか動作しません。クエリの結果は、好き嫌いのある投稿をすべて除外します。
これができない場合は、この問題を処理するにはどうすればよいでしょうか?そのようなのようなクエリの結果の上にマインドマップに来る最初の事:
posts =
Repo.all Post
|> Enum.map(fn(post) ->
likes_query = from l in Like, where: l.post_id == ^post.id
likes_count = Repo.aggregate(likes_query, :count, :id)
%{post: post, likes_count: likes_count}
end)
参加 '変更してみてください:'へ ' left_join: '最初のスニペットで。 – Dogbert
そして 'where:'を 'on:'に変更してください。 – Dogbert
@Dogbert Nice!それは動作します。 – ocwang