2016-10-30 8 views
2

私は、HABTM結合テーブルを使用して多対多の関連を持つモデルを持っています。しかし、私の結合テーブルは一意に私の行をマップしないので、私は一意の行を得るためにgroup_by節を追加する必要があります。プリロードにGroup By節を追加する

Repo.preloadを使用する場合、式でグループを追加する方法はありますか?

Repo.get!(P1, p1_id) 
|> Repo.preload(:c0) 

生成されたクエリ:

SELECT 
    c0.*, p1."id" FROM "c0" AS c0 
LEFT JOIN "p1" AS p1 
    ON p1."id" = 2 
LEFT JOIN "c2" AS c2 
    ON c2."p1" = p1."id" 
WHERE (c2."c1_id" = c0."id") 

対象クエリ:これに

SELECT 
    c0.*, p1."id" FROM "c0" AS c0 
LEFT JOIN "p1" AS p1 
    ON p1."id" = 2 
LEFT JOIN "c2" AS c2 
    ON c2."p1" = p1."id" 
WHERE (c2."c1_id" = c0."id") 
GROUP BY c0."id", p1."id" 

答えて

0

新しい、私はローカルでテストしていませんが、私はそれが次のように達成可能だと思います。

query = from p in P1, 
     join: c in assoc(p, :c0) 
     group_by: p.id 
     preload: [c0: c] 
Repo.get(query, p1_id) 
関連する問題