动态选择地图Ecto

时间:2017-06-06 13:11:21

标签: elixir ecto

我到目前为止创建了查询:

query = from page in "wagtailcore_page",
      where: page.url_path == ^url_path,
      join: h in ^table_name,
      where: h.page_ptr_id == page.id

我现在想在h

上动态选择属性

例如,如果我传入[:body, :footer]我想运行:

query = from [_page, h] in query,
      select: %{body: h.body, footer: h.footer}

我发现Ecto.Query.API.map看起来可以用于此问题的解决方案。

但是当我跑步时:

from [_page, h] in query, select: EctoApi.map(h, [:body])

我收到错误:

** (Ecto.Query.CompileError) `EctoApi.map(h, [:alphatext])` is not a valid query expression

根据map documentation底部的IMPORTANT消息,我们必须在执行我们没有做的连接时包含关系中使用的外键,但我不知道如何为我们正在进行的动态连接类型执行此类assoc

1 个答案:

答案 0 :(得分:1)

map可以在不导入任何内容的情况下使用。实际函数在Ecto中实现,Ecto.Query.API.map/2仅用于文档目的。以下应该有效:

from [_page, h] in query, select: map(h, [:body, :footer])