从模型中获取 table 个名称
Get table name form a model
所以我有这样的模型
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 映射到整个模型,但我想要的是 customers table 像这样而不是整个 Qber.V1.CustomerModel
我该怎么做?
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
所以我是这样实现的。
如果你没理解错的话,你有2张表:
customer_models
customers
并且您想使用 customers
通过模型 Qber.V1.CustomerModel
获取数据。
如果是这样,那么 Ecto 2.x 通过
支持
from customer in {"customers", Qber.V1.CustomerModel}, …
所以我有这样的模型
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 映射到整个模型,但我想要的是 customers table 像这样而不是整个 Qber.V1.CustomerModel
我该怎么做?
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
所以我是这样实现的。
如果你没理解错的话,你有2张表:
customer_models
customers
并且您想使用 customers
通过模型 Qber.V1.CustomerModel
获取数据。
如果是这样,那么 Ecto 2.x 通过
支持from customer in {"customers", Qber.V1.CustomerModel}, …