从表格中获取表格名称

时间:2017-12-14 09:35:50

标签: elixir phoenix-framework ecto

所以我有一个这样的模型

Qber.V1.CustomerModel

这是存储在我的代码中的变量可查询

defp build_select(queryable, opts_select \\ []) do
  case opts_select do
    nil -> 
      queryable
    IO.inspect opts_select
    select when is_list(select) ->
      IO.inspect select
      map =  Enum.map(select, &String.to_existing_atom/1)
      IO.inspect map  
      a =  from queryable, select: ^map
      IO.inspect a
   end
end

现在,当我运行查询时,它会将select映射到整个模型,但我想要的是 customers 表,而不是整个Qber.V1.CustomerModel

我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果你理解正确,你有2个表:

  • customer_models
  • customers

并且您希望使用customers来使用模型Qber.V1.CustomerModel获取数据。

如果是,那么Ecto 2.x通过

支持
from customer in {"customers", Qber.V1.CustomerModel}, …

答案 1 :(得分:-1)

model = queryable
    IO.inspect model
    Map.values(model.__struct__.__meta__)
    [Ecto.Schema.Metadata, nil, {nil, table_name}, :built] = Map.values(model.__struct__.__meta__)
    table = table_name

所以我这样实现了它。