以下是代码:
query = from(p in Tree,
where: p.name == ^tree,
where: p.user_id == ^user_id,
preload: [kw: :keyo]
)
data = Repo.all(query)
这可以工作,但会返回此结构中的数据:
{
Kw: [
{user_id: 1, keyo_id: 2, keyo: {some_keyo_thing: 5},
{user_id: 1, keyo_id: 32, keyo: {#keyo data}
...
]
}
无论如何要在上面的查询中获得kw / keyo数据的合并输出?我希望结果是:
[
{user_id: 1, keyo_id: 2, some_keyo_thing: 5,
{user_id: 1, keyo_id: 32, , some_keyo_thing: 3
...
]
答案 0 :(得分:0)
不是使用预加载,而是最好使用显式连接,然后选择要返回的字段
query = from(p in Tree,
join: kw in Kw, on: kw.tree_id == p.id,
join: k in Keyo, on: k.kw_id == kw.id,
where: p.name == ^tree,
where: p.user_id == ^user_id,
select: %{ user_id: p.user_id, keyo_id: k.id, some_keyo_thing: k.some_keyo_thing }
)
Repo.all(query)
它有点冗长,但会给你更多控制权。我猜你的kw和keyo的型号名称,所以必要时更正但是这应该有用