2
私はで構成され、私のDBで"influencer_platforms"
のテーブルを持っている:Ectoでレコードをグループ化してマップとして返すにはどうすればいいですか?
id | influencer_handle | name
私はのような名前で、グループを照会したい:Ecto
でそれを行うにはどうすればよい
%{
name1: [%{id: 1, influencer_handle: "i1"}, %{id: 3, influencer_handle: "i2"}],
name2: [%{id: 2, influencer_handle: "i3"}]
}
?これまでのところ、私は持っています:
defmacrop influencer_platform_json(influencer) do
quote do
fragment(
"jsonb_agg(?)",
fragment(
"json_build_object(?, ?, ?, ?)",
"id", unquote(influencer).id,
"influencer_handle", unquote(influencer).influencer_handle
)
)
end
end
def all do
from ip in InfluencerPlatform,
group_by: :name,
select: %{
ip.name => influencer_platform_json(ip)
}
end
それを達成するためのよりエレガントな方法はありますか?
'' influencer'を複数回引用符で囲むのを避けるために 'bind_quoted'を使用するとよいでしょうか? –
@MikeBuhot私はそれが 'fragment'の仕事であるかどうか分かりません。 – squixy