代码之家  ›  专栏  ›  技术社区  ›  script

从模型中获取表名

  •  -1
  • script  · 技术社区  · 8 年前

    我有一个这样的模型

    Qber.V1.CustomerModel
    

    这是存储在变量queryable中的代码

    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映射到整个模型,但我想要的是 客户 像这样的桌子而不是整个 Qber.V1.CustomerModel

    我该怎么做?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Hauleth    8 年前

    如果理解正确,则有两个表:

    • customer_models
    • customers

    你想使用 客户 使用模型获取数据 Qber.V1.CustomerModel .

    如果是这样的话,那么是第二个。x支持通过

    from customer in {"customers", Qber.V1.CustomerModel}, …
    
        2
  •  -1
  •   script    8 年前
    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
    

    所以我就这样实现了。